5

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

  1. 保持图标在状态栏中可见,只要应用程序正在运行,即使用户选择清除状态栏。
  2. 如果应用程序退出,即使(尤其是)被杀死,从状态栏中清除图标?我意识到当应用程序显式退出时我可以将其删除,但我想确保如果应用程序被终止它会消失。我不得不承认我还没有尝试过。

尽管我已经看到似乎正在执行此操作的应用程序,但我无法获得有关此的一些好的信息。

4

2 回答 2

4

1) 查看状态栏通知上的开发者文档页面。另请注意,您需要查看FLAG_NO_CLEAR常量,它应该涵盖您的情况。

2)在应用程序被杀死的情况下,保留图标不一定是坏事,并且在某种程度上取决于应用程序的目的。特别是,如果您的应用程序进入后台然后被杀死,那么Google 的一位工程师实际上已经注意到离开图标是预期的行为

正确, onDestroy() 被杀死时不会被调用。这与活动相同——内核在需要时杀死进程,而不是等待应用程序。

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

后台服务定期被杀死是正常的。这是有意的,因为通常后台服务不是用户直接知道的,并且不时地重新启动他们的进程可以避免此类服务消耗越来越多的 RAM 的问题。

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

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

于 2010-09-14T21:04:46.460 回答
2
  1. http://developer.android.com/reference/android/app/Notification.html#FLAG_NO_CLEAR
  2. 该图标会自动删除(至少当我强行杀死手机上的应用程序时)。
于 2010-09-14T21:04:48.703 回答