Android Win Death - 应用程序死亡,没有保存状态

问题描述:

我有一个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

AFAIK没有什么可以做的,以防止操作系统杀死你的应用程序,你不应该这样做。不要对抗系统。

对于如此大的工作(与FTP服务器同步文件),您应该尝试使用Service而不是AsyncTask。这很容易实现,请查看文档IntentServicehere

+0

你是对的没有办法阻止操作系统杀死应用程序。然而,对于需要花费很长时间才能完成一个好主意的任务,应该是不断添加通知并更新进度,以便您的“服务”与主线程进行交互。哪些*应该保持它不会被杀死。 – Abbas

+0

我在整个过程中发送祝酒(每完成5%),但这还不够......我会尝试一下该服务,看看它是否会发生变化,并会保持发布。 – SirPsycho

+1

IntentService解决了我的问题,AsyncTask不适用于处理长/要求严格的流程。 – SirPsycho