在Android O中,我們有一些新的background limitations。例如,我們只能通過Context.registerReceiver
方法註冊隱式廣播。當系統殺死我們的進程時(例如由於內存不足),註冊的接收器也將被銷燬。TileService被視爲前臺進程
爲了減少系統殺死我們進程的機會,我們必須告訴系統這個過程仍然處於前臺。按照documentation一個應用程序被認爲是在前臺如有下列情況爲真:
- 它有一個明顯的活動,該活動是否已啓動或暫停。
- 它有一個前臺服務
- 另一個前臺應用程序通過綁定到其中一個服務或通過使用其中一個內容提供程序連接到應用程序。例如,應用程序是在前臺,如果另一個應用程序綁定到其:
- IME
- 壁紙服務
- 通知監聽
- 語音或文本服務
如果這些條件都不是真的,則應用程序被認爲是在後臺。
那麼在Android N中引入的TileService
(用於快速設置瓷磚)呢?當我們在mainfest文件中註冊TileService
爲ACTIVE_TILE
時,系統在每次可見圖塊時都不綁定服務(如此article中所述),因此我們的服務綁定到另一個應用程序,面對系統進程。
那麼我的應用程序(只要將圖塊添加到快速設置窗格中)視爲前景應用程序?這將是很好的,因爲我不需要這種方法的持續通知,但用戶可以在後臺發送我的應用程序(通過刪除瓦片)
很好的答案,謝謝你! – Cilenco