2013-02-15 44 views
0

我有一个AsyncTask下载doInBackground()方法中的文件。我在发布之前正在测试我的应用程序。当我手动强制退出应用程序并重新启动它时,doInBackground()似乎被调用,但不是onProgressUpdate()onPostExecute()。我的onPostExecute()调用导致UI更改的方法。异步任务不调用OnPostExecute或onProgressUpdate我手动强制退出应用程序并重新启动

如何确保onPostExecuteonProgressUpdate()被调用?我也看到了以下警告:

Activity停止超时值ActivityRecordActivity破坏超时ActivityRecordActivity空闲超时时间ActivityRecord

代码:

public void OnCreate(){ 

    new RefreshMyDashboardTask().execute(); 
} 

private class RefreshMyDashboardTask extends AsyncTask<Void, Void, Long> { 

    @Override 
    protected void onPreExecute() { 
    } 

    @Override 
    protected void onProgressUpdate(Void... params) { 
     super.onProgressUpdate(params); 
    } 

    @Override 
    protected Long doInBackground(Void... params) { 
     // my server calls are called here. 
    } 

    @Override 
    protected void onPostExecute(Long result) { 
    } 
} 
+0

您可能应该解释为什么async任务正在被调用的流程。 – JoxTraex 2013-02-15 00:04:22

+0

编辑问题 – sireesha 2013-02-15 00:07:16

+0

@ user1408774:不要只描述发生了什么 - 邮政编码。 – Squonk 2013-02-15 00:12:57

回答

1

如果你杀了你的应用程序,或者如果系统杀死它,然后你的应用程序的AsyncTask线程被杀死。它们都是你的应用程序的一部分;线程无法在启动它们的过程之外生存。

即使IntentService可能无法在强制退出时存活。这就是为什么任务杀手是一个坏主意。

总之,你看到的是预期的行为。

+0

但是这种情况发生在我第二次强制退出应用之后。当我第一次强制退出并重新启动时,应用程序将显示UI,就好像异步任务已调用OnPostExecute一样。 – sireesha 2013-02-15 00:25:47

+0

@ user1408774:“当我第一次强制退出并重新启动时,应用程序显示UI就好像异步任务已调用OnPostExecute一样” - 您以某种方式误解了您的结果。 “强制停止”会终止您的过程。 – CommonsWare 2013-02-15 00:59:10

+0

谢谢CommonsWare。当我第二次强制关闭后启动应用程序时,我的UI是黑色的,我的日志显示doInBackground正在执行。这怎么可能?我希望一切都停止。 – sireesha 2013-02-15 01:09:41

相关问题