據我所知,Android可能會在任何時候殺死我的進程1。Android:狀態強制殺死的應用程序
有人可能會解釋文章[1],使得在任何時候,一個過程必須能夠在碰撞後倖存下來。這是如何處理的?如果某個過程以這種方式死亡,是否有任何方法的保證?文章*沒有提到它。
我的問題是,你如何保證在下一次啓動時以一種理智的方式恢復被迫殺死的進程?我的進程唯一的狀態(假設進程被終止時調用的方法沒有保證)是持久存儲(DB或其他地方)中的狀態,如果進程被強制終止,這可能是不完整的。
具體示例:假設我要求服務執行一些工作。這項工作不像播放音樂文件。這是可以在某些時候被認爲「完成」的工作(例如將數據發送到網絡)。如果我的服務被殺死了,在完成50%的工作之後,如果我的應用程序知道工作是否成功,該怎麼辦?我可以在持久存儲器中標記「已完成」,但即使如此,在發送最後一個字節之後,我設置標誌之前,Android可能會終止我的服務。
有沒有處理這個問題的常用方法?我的服務在重新啓動後可能會與Web服務器進行協商,以查看文件是否已傳輸,但它很快變得非常複雜,我認爲它不會真正解決問題。
[編輯1日開始]
我知道下面的文字[1],但是,「這最後的狀態是每一個用戶離開該應用程序的一部分時產生的,不爲服務解決問題,不是當它被封殺」
[編輯1點結束]
[編輯2開始]
我發現了一些很有趣的。 Android文檔中與此相關的明顯不一致。請參閱在2
[編輯2月底]
[編輯3開始]
的 「明顯不一致」 已經解決了我的新問題。這是由於我對「應用程序」/「過程」/「活動」術語不確切。不過,這個問題依然存在。
[編輯3月底]
這就是爲什麼你應該注意開發你的應用程序。嘗試儘可能多地優化它,並讓它變成** light **。 –
我的觀點是,如果我是正確的,那麼無論我有多開心,我的應用程序可能隨時被殺死。即使在前臺。我認爲我不正確,Android有一些保證,但我找不到任何。 – eversceptic
好吧,'允許內核立即回收應用程序資源,可以避免嚴重的內存不足情況。「 - 因此,不要讓Android認爲您的應用程序耗費內存,您將有更多的機會獲得其他應用程序已關閉。 –