我的應用程序具有在同一進程中運行的活動和服務。當用戶通過單擊「停止」按鈕終止活動時,活動導致服務終止。活動中止時的服務通知
從Android文檔我的理解,該系統可以殺死一個過程,回收資源:
「一旦你的活動已停止,如果需要恢復系統內存的系統可能會破壞實例在極端情況下,該系統可以簡單地殺死你的應用程序,而無需調用該活動的最終的onDestroy()回調,......」
問題1:是否有可能被殺死了我的活動,但不是服務?我寧願我的服務保持活力。
如果答案是「是」,那麼
問題2:是否存在這樣的服務可以通知該活動已被殺害的機制?
IBinder.linkToDeath有我需要的功能,但似乎適用於一個過程,而不是一個活動。
我想到了一個間接法一樣具有活性採取信號燈的所有權,並具有服務使用一個線程等待就可以了。然後,當活動被殺死時,它會釋放信號量,服務會得到它,提供通知。但是我想知道是否沒有我可以使用的以Android爲中心的技術。
[開始編輯]
讀你所提供的非常有益的意見後,我想澄清,我提出的方案。
我已經開始了兩個組件:一個活動和一個服務。應用程序已配置,以便服務可以在活動停止並銷燬後繼續運行。用戶可以多次重新啓動/啓動活動,並且它將使用相同的服務實例。
通常活動會通知它的onDestroy期間被摧毀的服務()。但是可能不會調用onDestroy()。
我想知道是否有一些我可以用它來通知該活動已被殺死,而不調用它的onDestroy服務Android的具體機制()已作出方法。
[編輯完]
感謝您的幫助。
意願
殺害。您可以傳遞活動受到在的onDestroy()的處理程序將消息發送到服務摧毀,或者您可以使用LocalBroadcastManager –
@Marcin:我的印象是從讀取,一個活動被殺害時,各個崗位,它的ISN的onDestroy不叫。我不擔心服務被殺。我是否正確閱讀您的回覆?謝謝回答。 – Will
通常會調用onDestroy。但是如果系統需要更多的內存,它可以殺死整個應用程序(包括所有活動和服務)。它不會導致死亡只是一個活動,而無需調用的onDestroy –