我希望我們不能收到任何消息,當我們強制停止我們的Android設備中的默認信使應用程序。我強制停止默認信使應用程序併發送消息到該Android設備。我收到該設備的消息。爲什麼此設備收到消息?爲什麼Messenger應用程序在應用程序停止時接收消息?
回答
在Android 3.1+上,如果使用明確的Intent
發送廣播,BroadcastReceiver
將僅在其應用程序被強制停止後才起作用。在這裏,通過「明確的Intent
」,我的意思是包含接收器的ComponentName
,除了可能的其他數據,如動作字符串。
目前還不清楚「默認信使應用程序」和「消息」的含義。如果你的意思是短信,我預計在Android 4.4+上,如果用戶的默認短信客戶端被強制停止,它仍然會收到短信,因爲Android可能會使用明確的Intent
與之通話。但是,在Android 4.3及更低版本中,我不希望強制停止的SMS客戶端接收消息,因爲SMS_RECEIVED
只是一個普通的有序廣播。
,我的意思是我們的android設備中的短信應用程序。 – 2014-11-21 11:38:01
這經常發生,因爲有一個服務正在監聽。該應用使用該服務連接Google Cloud Messaging並接收消息。您需要禁用該服務。您可以查看設置 - >應用程序,然後向左滑動以查看全部或正在運行並查看服務。
延伸史蒂夫的答案進一步,這可能是一個示例性案例,描述爲什麼程序員必須控制他們的應用程序中的任何Service
s。許多人只是宣佈並運行它們,然後他們就忘記了它們。 Service
運行在與前臺應用程序不同的組件中,因此如果您關閉了應用程序,但不停止Service
,它仍將繼續運行,這可能就是您正在經歷的。但是,很多人往往誤解了這個概念。這是一個不同的組件,但不是不同的線程或不同的過程。
服務在其宿主進程,該服務不會創建自己的線程的主線程中運行,在單獨的進程不運行(除非另有說明) 。這意味着,如果您的服務將執行任何CPU密集型工作或阻止操作(如MP3播放或網絡連接),則應在服務中創建一個新線程來完成此項工作。 [...]
您沒有指定什麼樣的信息系統的使用你的應用程序,但如果是GCM
(谷歌雲通訊)或一些相似的系統,它的確採用了背景Service
再收到通知中央服務器,你得到他們,因爲你的前臺應用程序已關閉,但你的Service
仍在運行。
要停止Service
,您需要在停止前臺應用程序之前調用Context
的stopService()
方法(在documentation中定義)。
- 1. 通過套接字接收信息時,應用程序停止
- 2. Android應用程序在一段時間後停止接收c2dm消息
- 3. 消息收發應用程序接收消息
- 4. 爲什麼我的聊天應用程序有時不接收消息?
- 5. 暫停從java web應用程序發送和接收消息
- 6. 在啓動應用程序時收到消息「無法啓動應用程序」
- 7. 在接收文本消息時啓動應用程序
- 8. C++應用程序不能接收從C#應用程序連續消息
- 9. 當應用程序調用SQLiteOpenHelper時,Android應用程序停止
- 10. 爲什麼我的應用程序停止播放按鈕時
- 11. GCM應用程序未收到消息
- 12. 爲什麼有時我的應用程序停止工作並給程序接收信號:「SIGABRT」錯誤?
- 13. 如何防止Android顯示應用程序停止消息
- 14. Clickonce應用程序已停止爲WPF應用程序工作
- 15. 爲什麼InputStream正在停止我的應用程序?
- 16. 調用registerToken時應用程序停止
- 17. 您可以使用什麼來讓應用程序能夠接收SMS消息?
- 18. 防止應用程序接收按鍵
- 19. 應用程序停止unexpectdly
- 20. android:OnEditorActionListener停止應用程序
- 21. RSS應用程序停止
- 22. 停止Android應用程序
- 23. 應用程序已停止
- 24. 應用程序已停止
- 25. 應用程序停止
- 26. AsyncTask停止應用程序
- 27. 爲什麼Android 2.1的應用程序停止使用2.2?
- 28. 停止應用程序在接收電話?
- 29. 如何在重新部署Glassfish應用程序時顯示「應用程序停止升級」消息?
- 30. 不幸停止應用程序停止
爲什麼默認的Messenger應用程序在設置強制停止後收到消息。 brodcastreceiver會在app force停止後工作嗎? – 2014-11-18 13:29:00