2010-09-14 87 views
5

我想對狀態欄中圖標的狀態進行一點控制。我希望能夠做到以下幾點:控制android狀態欄圖標

  1. 保持圖標 在狀態欄可見,只要 的應用程序正在運行,即使用戶選擇清除狀態欄。
  2. 清除狀態欄中的圖標 如果應用程序已退出,甚至(尤其是)如果它已被殺死?我意識到,當應用程序明確退出時,我可以將其刪除,但如果應用程序被殺,我想確保它消失。我不得不承認我還沒有嘗試過。

我還沒有能夠得到這方面的一些很好的信息,雖然我看到應用程序似乎是這樣做的。

回答

4

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()是不是當它被殺死稱爲 。這與活動相同 - 內核在需要時會殺死 進程,而不是等待 該應用。

狀態欄正確保持 的圖標。該服務將在以後被重新啓動 ;它並沒有停止。

定期處理後臺服務 是正常現象。這是 故意的,因爲通常 後臺服務是不是 用戶直接瞭解並 重新啓動他們的流程每一個現在 然後避免與這樣的 服務消費增加量的RAM 問題。

如果您的服務是值得用戶 實際上是知道的(如音樂播放 ),考慮 Service.startForeground()。

這就是說,圖標應該可能會消失。其他具有持久性圖標的應用程序(Meebo浮現在腦海中)會在您使用任務管理器殺死它們時清除。不過,我不確定這是否會發生。如果你的應用在OOM的背景中被殺死,那麼你很可能不想清除它。

+0

FLAG_NO_CLEAR按預期工作,我應該抓住這一點,謝謝!出於某種原因,當我殺死該應用程序時,狀態欄並未清除。基本上,我希望狀態欄圖標指示應用程序是否實際運行,所以我希望它清除它是否由於任何原因而停止。當然,onDestroy()我清除它,但當應用程序被殺或強制關閉時它仍然存在。 – KMP14 2010-09-16 12:32:51

+0

我不知道其他應用程序如何處理這個問題,因爲當應用程序被強行關閉或崩潰時,不會調用onDestroy()。不過,這是郵件列表上的一個話題。也許先看看這裏:http://www.mail-archive.com/[email protected]/msg59044.html – eldarerathis 2010-09-16 13:15:41