仅当设备连接到计算机时,异步任务才会第二次运行

时间:2014-02-20 19:24:43

标签: android multithreading android-asynctask

我现在已经坚持了这个错误了一段时间。

我有一个AsyncTask类,它的工作是从我的服务器检索数据,并在onPostExecute()我正在更新我的列表视图。

当我正在调试时,一切都很完美,但当我的设备未连接到计算机时运行它时,任务仅在第一次搜索时运行。

这就是我调用任务的方式:

task = (DownloadWebpageTask)new DownloadWebpageTask();
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mData);

我没有例外,但它不会超过一次。

有趣的是,我启动了我的应用程序(当我的设备未连接到计算机时),我第一次运行搜索 - >得到结果。第二次运行它,它只是挂起(没有任何反应)我检查它甚至没有到达doInBackground(),但是当我将我的设备插入我的笔记本电脑时它会释放它,检索数据,每件事情都很好。

我没有android.os.Debug.waitForDebugger();,所以这不是问题。

非常感谢任何帮助。

编辑:我发现奇怪的事情 - 第一次搜索效果很好。第二次搜索不起作用(75%的次数)。第三次搜索和完善工作

1 个答案:

答案 0 :(得分:0)

在API级别11中添加了

executeOnExecutor()。是否要并行或串行执行任务?您是否有可能造成麻烦的同步机制?请查看docs developer.android.com/reference/android/os/ ...,Params ...)您可能需要尝试task.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, mData)并查看结果!