2012-06-28 44 views
21

Tôi đang chạy whatsapp (chúng tôi có thể gọi nó là appX từ bây giờ) trong thiết bị A. Tôi đi để quản lý các ứng dụng -> lực lượng đóng vì vậy appX được đóng lại và tôi không còn thấy appX như dịch vụ đang chạy.dịch vụ whatsapp được khởi động lại ngay cả khi tôi buộc dừng ứng dụng như thế nào?

Bây giờ, sau 5 phút, tôi gửi tin nhắn từ appX của thiết bị khác (thiết bị B) đến thiết bị A appX (ứng dụng mà chúng tôi đã giết). Sau đây là 2 kịch bản tôi đã thử nghiệm:

  • thiết bị A với android 2.1: nó không bao giờ nhận được tin nhắn, do đó chúng tôi có thể nói rằng không ai trong số các dịch vụ phụ lục đã khởi động lại. Nó CHỈ nhận được thông báo nếu người dùng khởi động lại ứng dụng theo cách thủ công.

  • thiết bị A có Android 2.3.6: vì MỘT SỐ lý do kỳ diệu, cho dù nó bị chết bao lâu, ngay khi chúng tôi gửi tin nhắn từ thiết bị B -> thiết bị A nhận được tin nhắn, do đó, appX's dịch vụ được khởi động lại. Lưu ý: tất cả thời gian appX bị đóng và KHÔNG nhận được bất kỳ thông báo nào, tôi không thể xem bất kỳ dịch vụ đang chạy nào của appX trong ứng dụng quản lý, điều này có nghĩa là dịch vụ ảo này sẽ được khởi động lại ngay khi nhận được thông báo/thông báo

Tôi biết nghe có vẻ kỳ lạ, và nhiều người sẽ nói điều này là không thể, nhưng một lần nữa, điều này đã được thử nghiệm trên 2 thiết bị này.

Tôi đang cố gắng hoàn thành hành vi tương tự này, vì vậy mọi trợ giúp sẽ được đánh giá cao.

+0

Tôi đã thử tính năng này trên Android 4.4.4. Tôi đã dừng ứng dụng biểu mẫu WhatsApp-> buộc dừng. Sau này tôi không nhận được bất kỳ tin nhắn tự động. Tôi đã phải tự khởi động WhatsApp để nhận bất kỳ tin nhắn nào. Điều này chỉ xảy ra trên 2.3.6? – RocketRandom

Trả lời

45

Trước khi lên/xuống bỏ phiếu câu trả lời này xin vui lòng đưa vào tài khoản rằng câu trả lời là gần 3 tuổi bây giờ (nói về tháng 5 năm 2015) và những thứ có thể đã thay đổi!

Tôi không nghĩ rằng đó là một số điều kỳ diệu xảy ra ở đây! Nó chỉ là Android C2DM (xem: https://developers.google.com/android/c2dm/), trong khi ứng dụng có đăng ký Receiver cho Thông báo đẩy đến và bị đánh thức bởi thông báo này. Android C2DM là/đã có sẵn với Android 2.2, đó là lý do tại sao bạn không thể nhìn thấy cùng một hành vi trên thiết bị của bạn với Android 2.1 và chạy.

Bằng cách này: Như bạn thấy, C2DM bị phản đối kể từ ngày 26 tháng 6, năm 2012. Vì vậy, thay vì C2DM, ta nên sử dụng GCM (xem: http://developer.android.com/guide/google/gcm/gs.html)

Bình luận hữu ích: GCM cần kết nối internet. Bạn có thể sử dụng bất kỳ bộ thu phát sóng nào khác như SMSReceiver bằng cách chuyển giới hạn này.

+1

Câu trả lời hay nhất từ ​​trước tới nay! Cảm ơn bạn đã phản ứng chính xác! – cesarmax

+4

Bạn được chào đón. Nếu câu trả lời này hữu ích cho bạn, hãy cân nhắc đánh dấu nó là câu trả lời đúng (nhấp vào dấu kiểm), để câu hỏi này có thể được đánh dấu là đã đóng;) – herom

+1

Vâng, tôi đã triển khai GCM nhưng khi tôi đóng dịch vụ thì không không nhận được thông báo đẩy, vì vậy tôi không nghĩ rằng GCM đang giúp đỡ ngay cả khi chúng tôi đóng dịch vụ và vẫn nhận được mesage – Hunt

12

Bắt đầu từ Android 3.1 (API 12), nếu một ứng dụng là lực dừng lại nó sẽ không khởi động lại đến khi người dùng bằng tay chạy ứng dụng một lần nữa.

Điều này sẽ xảy ra ngay cả khi ứng dụng có chứa Service hoặc hoạt động BroadcastReceiver.

Bạn có thể tìm thấy tài liệu chính thức here.

+1

Một trong những giải pháp tốt nhất để đồng ý. –

+0

[giải pháp] này (http://stackoverflow.com/questions/17768932/service-crashing-and-restarting#18199749) làm cho ngày của tôi. –

3

tôi không có ý tưởng về dịch vụ whatsApp.

Nhưng có thể sau khi dừng ứng dụng cưỡng bức, hãy khởi động lại dịch vụ của ứng dụng.

tôi sử dụng dịch vụ START_STICKY cho trò chuyện của tôiApp. tôi phải làm điều tương tự vì vậy tôi sử dụng dịch vụ START_STICKY vì vậy khi ứng dụng của tôi giết hoặc buộc dừng thiết lập, sau vài giây dịch vụ của tôi khởi động lại và tôi có thể đăng nhập vào máy chủ xmpp của tôi và nhận tin nhắn đến.

+1

START_STICKY không khởi động lại dịch vụ trong phiên bản lollipop .. tất cả đều được làm việc –

1

không có gì huyền diệu ở đây appX sử dụng thông báo đẩy thông qua nền tảng GCM android https://developer.android.com/google/gcm/index.html trong GCM ứng dụng đăng ký cho người nhận braodcast và bộ thu phát bắt đầu dịch vụ nhận thông báo đẩy. Android GCM phụ thuộc vào các dịch vụ của Google Play có sẵn trên Android 2.2 trở lên do đó bạn không thấy thông báo trên thiết bị 2.1

Các vấn đề liên quan