我现在已经坚持了这个错误了一段时间。
我有一个AsyncTask
类,它的工作是从我的服务器检索数据,并在onPostExecute()
我正在更新我的列表视图。
当我正在调试时,一切都很完美,但当我的设备未连接到计算机时运行它时,任务仅在第一次搜索时运行。
这就是我调用任务的方式:
task = (DownloadWebpageTask)new DownloadWebpageTask();
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mData);
我没有例外,但它不会超过一次。
有趣的是,我启动了我的应用程序(当我的设备未连接到计算机时),我第一次运行搜索 - >得到结果。第二次运行它,它只是挂起(没有任何反应)我检查它甚至没有到达doInBackground()
,但是当我将我的设备插入我的笔记本电脑时它会释放它,检索数据,每件事情都很好。
我没有android.os.Debug.waitForDebugger();
,所以这不是问题。
非常感谢任何帮助。
编辑:我发现奇怪的事情 - 第一次搜索效果很好。第二次搜索不起作用(75%的次数)。第三次搜索和完善工作
答案 0 :(得分:0)
executeOnExecutor()。是否要并行或串行执行任务?您是否有可能造成麻烦的同步机制?请查看docs developer.android.com/reference/android/os/ ...,Params ...)您可能需要尝试task.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, mData)
并查看结果!