控制安卓状态栏图标

5

我想对状态栏中图标的状态进行一些控制。我希望能够做到以下几点:

  1. 只要应用程序在运行,即使用户选择清除状态栏,也要保持图标在状态栏中可见。
  2. 如果应用程序退出,甚至(特别是)如果它被杀死,则从状态栏中清除图标?我意识到可以在应用程序显式退出时删除它,但我想确保它在应用程序被杀死时消失。我必须承认我还没有尝试过这个。

虽然我看到了一些应用程序似乎正在做这件事,但我还没有找到一些好的信息。

2个回答

4

1) 查看状态栏通知的开发文档页面。另外请注意,您需要查看FLAG_NO_CLEAR常量,它应该符合您的条件。

2) 在应用程序被杀死的情况下,保留图标并不一定是一件坏事,这在一定程度上取决于应用程序的目的。特别地,如果您的应用程序进入后台然后被杀死,Google工程师之一指出保留图标是预期行为

没错,当它被杀死时,onDestroy()不会被调用。 这与Activity相同--内核在需要时终止进程,而不等待应用程序。

状态栏正确地保留了图标。 服务稍后将重新启动;它还没有停止。

定期杀死后台服务是正常的。 这是有意的,因为通常后台服务不是用户直接关注的内容, 并且每隔一段时间重启它们的进程可以避免这些服务消耗越来越多的RAM的问题。

如果您的服务是用户实际关注的内容(例如音乐播放),请考虑Service.startForeground()。

话虽如此,图标还是应该消失。其他具有持久性图标的应用程序(例如Meebo)在使用任务管理器终止后会清除。但我不确定在所有情况下都会发生这种情况。如果您的应用在后台被OOM杀死,那么您很可能不想将其清除。


FLAG_NO_CLEAR 的工作效果符合预期,我应该注意到这一点,谢谢!由于某种原因,当我杀死应用程序时状态栏没有清除。基本上,我希望状态栏图标能够指示应用程序是否实际在运行,因此如果由于任何原因停止,则希望它被清除。当然,在 onDestroy() 中我会清除它,但是当应用程序被杀死或强制关闭时,它仍然存在。 - KMP14
我不确定其他应用程序如何处理这个问题,因为在应用程序被强制关闭或崩溃时onDestroy()方法不会被调用。这是一个以前出现过的邮件列表话题。也许可以从这里开始看一下:http://www.mail-archive.com/android-developers@googlegroups.com/msg59044.html - eldarerathis

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接