0

我有一個Android應用程序,它啓動一個asynctask以與遠程FTP同步文件。同步過程在後臺完成,以便我們仍然可以打開並讀取文件。對於我不測試我的應用程序的幾個小時後才明白保持與消息隨機崩潰以下原因:Android Win Death - 應用程序死亡,沒有保存狀態

04-21 14:26:47.926 SM-T585:警告5355 ActivityManager強制刪除ActivityRecord { easyDoc/md516a8905f8e96d5.MainActivity t1431}:應用程序死了,沒有保存的狀態
04-21 14:26:47.926 SM-T585:5355信息WIN的WindowState死窗口{47e1c65 U0 D0 easyDoc/md516a8905f8e96d5.MainActivity}
04-21 14:26:47.926 SM-T585:調試5355 ActivityManager removeProcessNameLocked mProcessNames.remove pid = 20496,hash = 156239617,name = easyDoc
04-21 14:26:47.926 SM-T585:Info 5355 ActivityManager進程easyDoc.easyDoc(pid 204 96)(形容詞0)已經去世(105633)
04-21 14:26:47.926 SM-T585:5355調試ActivityManager isAutoRunBlockedApp :: easyDoc.easyDoc,自動運行

我可以做什麼調試這並防止我的應用程序被活動管理器殺死?

+0

所以當你的應用崩潰時,它總是在後臺? – Abbas

+0

我的應用程序已經打開,我可以使用它,但同步文件的過程在後臺運行,直到一切崩潰。如果我打開多任務,我仍然可以在那裏看到它... – SirPsycho

+0

我看到那裏,操作系統不應該摧毀你的應用程序。但也許這可能只是與'AsyncTask'相關的東西,因爲它們不推薦用於長期任務。像@ mVck建議的那樣嘗試使用粘性的「服務」。 – Abbas

回答

3

AFAIK沒有什麼可以做的,以防止操作系統殺死你的應用程序,你不應該這樣做。不要對抗系統。

對於如此大的工作(與FTP服務器同步文件),您應該嘗試使用Service而不是AsyncTask。這很容易實現,請查看文檔IntentServicehere

+0

你是對的沒有辦法阻止操作系統殺死應用程序。然而,對於需要花費很長時間才能完成一個好主意的任務,應該是不斷添加通知並更新進度,以便您的「服務」與主線程進行交互。哪些*應該保持它不會被殺死。 – Abbas

+0

我在整個過程中發送祝酒(每完成5%),但這還不夠......我會嘗試一下該服務,看看它是否會發生變化,並會保持發佈。 – SirPsycho

+1

IntentService解決了我的問題,AsyncTask不適用於處理長/要求嚴格的流程。 – SirPsycho

相關問題