我想对状态栏中图标的状态进行一些控制。我希望能够做到以下几点:
- 只要应用程序在运行,即使用户选择清除状态栏,也要保持图标在状态栏中可见。
- 如果应用程序退出,甚至(特别是)如果它被杀死,则从状态栏中清除图标?我意识到可以在应用程序显式退出时删除它,但我想确保它在应用程序被杀死时消失。我必须承认我还没有尝试过这个。
虽然我看到了一些应用程序似乎正在做这件事,但我还没有找到一些好的信息。
1) 查看状态栏通知的开发文档页面。另外请注意,您需要查看FLAG_NO_CLEAR常量,它应该符合您的条件。
2) 在应用程序被杀死的情况下,保留图标并不一定是一件坏事,这在一定程度上取决于应用程序的目的。特别地,如果您的应用程序进入后台然后被杀死,Google工程师之一指出保留图标是预期行为:
没错,当它被杀死时,onDestroy()不会被调用。 这与Activity相同--内核在需要时终止进程,而不等待应用程序。
状态栏正确地保留了图标。 服务稍后将重新启动;它还没有停止。
定期杀死后台服务是正常的。 这是有意的,因为通常后台服务不是用户直接关注的内容, 并且每隔一段时间重启它们的进程可以避免这些服务消耗越来越多的RAM的问题。
如果您的服务是用户实际关注的内容(例如音乐播放),请考虑Service.startForeground()。
话虽如此,图标还是应该消失。其他具有持久性图标的应用程序(例如Meebo)在使用任务管理器终止后会清除。但我不确定在所有情况下都会发生这种情况。如果您的应用在后台被OOM杀死,那么您很可能不想将其清除。
onDestroy()
方法不会被调用。这是一个以前出现过的邮件列表话题。也许可以从这里开始看一下:http://www.mail-archive.com/android-developers@googlegroups.com/msg59044.html - eldarerathis