我的程序中有一个AsyncTask,它在运行几次后似乎在onPreExecute()之后停止。我的意思是,我可以使用该应用程序,并且所有内容都能运行大约10到20次,但随后会暂停。这是怎么回事:

private class MyTask extends AsyncTask<String, Void, Data> {

    protected void onPreExecute() {
        // show loading dialog
        Log.d(TAG, "end onPreExecute");
    }

    protected Data doInBackground(String... params) {
        Log.d(TAG, "start doInBackground");
        // do stuff
    }

    protected void onPostExecute(Data myData) {
        // do stuff
    }

}


当它停止工作时,会发生什么情况,即加载对话框将永远保持加载状态,而"end onPreExecute"会打印,而"start doInBackground"不会。

为什么会这样呢?

最佳答案

很难说出问题出在哪里。由于您的异步任务似乎在前几次工作,所以可能是该API功能太"unstable" for your intention ...

一个简单的解决方案就是用其他Thread解决方案代替AsyncTask:


Here是该帖子由traditional Thread解决的问题。
Here是显示如何使用Handler的帖子。


希望有帮助!

07-24 09:26