我希望我们不能收到任何消息,当我们强制停止我们的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