【问题标题】:controlling the android status bar icon控制android状态栏图标
【发布时间】:2010-09-14 20:45:18
【问题描述】:

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

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

我无法获得有关这方面的一些好的信息,尽管我已经看到似乎正在这样做的应用程序。

【问题讨论】:

    标签: android statusbar


    【解决方案1】:

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

    2) 在应用被杀死的情况下,保留图标不一定是坏事,并且在某种程度上取决于应用的目的。特别是,如果您的应用程序进入后台然后被杀死,leaving the icon has actually been noted to be expected behavior by one of Google's engineers:

    正确,onDestroy() 没有被调用 当它被杀死时。这是一样的 作为活动——内核杀死 在需要时处理,而不是等待 应用程序。

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

    后台服务正常 定期被杀。这是 故意的,因为通常 后台服务不是什么东西 用户直接知道,并且 时不时重启他们的进程 然后避免此类问题 服务消费量增加 内存。

    如果您的服务是用户 实际上是意识到(如音乐 播放),考虑 Service.startForeground().

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

    【讨论】:

    • FLAG_NO_CLEAR 按预期工作,我应该明白这一点,谢谢!出于某种原因,当我终止应用程序时,状态栏没有清除。基本上,我希望状态栏图标指示应用程序是否实际运行,所以我希望它清除它是否因任何原因停止。当然,onDestroy()我清除它,但是当应用被杀死或强制关闭时它仍然存在。
    • 我不确定其他应用程序如何处理这个问题,因为当应用程序被强制关闭或崩溃时不会调用onDestroy()。不过,这是一个以前在邮件列表中出现过的话题。不妨先看看这里:mail-archive.com/android-developers@googlegroups.com/…
    【解决方案2】:
    1. http://developer.android.com/reference/android/app/Notification.html#FLAG_NO_CLEAR
    2. 图标会自动移除(至少在我强行关闭手机上的应用时)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-31
      • 2014-07-15
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多