我有一个活动,在该活动中,我使用asyctask的子类与服务器同步后端服务器。异步任务在App终止时停止(onDestroyed被调用)
鉴于这是一项网络任务,可能需要几秒钟的时间。我担心发生以下情况。
活动开始,每当asynctask开始运行时,它都会启动。 onPrexecute()被调用,执行并结束。比doInBackground()被调用,并且这样做,然而,只是当方法被执行时,用户按下主页按钮并从最近的应用程序中滑动应用程序。 (这当然会导致应用程序终止,并且所有的onDestroy方法都会被调用活着的活动。(纠正我,如果我错了这个))。
在我的onPostExecute()方法中,我将数据插入到数据库并更新视图。 但是由于应用程序'终止',onPostExecute()方法从不运行。
我的问题是:
- 当用户按下home键,并得到了应用,并挥笔应用,是doInBackground停止在那一刻?也就是说,它在中间被切断,不会继续它的作用?
- 我将从服务器获取并放入数据库的数据会发生什么?建议将数据放入doInBackground中的数据库中吗?
但不会IntentService(就像asynctask),只要应用程序被杀死,就停止,所以它不会甚至能够发射广播。 – tony9099
不,不会停止。 IntentService与调用活动完全分离,所以它将继续运行,直到它完成任务,即使启动它的应用程序被终止。这就是为什么它对于数据库操作来说非常完美,因为它仍然会将所有接收到的数据写入数据库。发送广播只是为了通知调用活动服务已完成,并且应该更新它的视图 - 所以如果活动不再运行,则无论如何不重要。 – physphil
编号请参阅我答案中的链接。我已经测试过了。 – wtsang02