每次我执行 httpRequest
时,屏幕会在代码执行时锁定几秒钟。因此,我使用 AsyncTask
在一个单独的线程中完成我所有的 httpRequest
工作,同时建立一个 ProgressDialog
以便用户知道发生了什么事。
我最近遇到了以下情况:我的 httpRequest
之一的输入依赖于先前 httpRequest
(+parse) 操作的结果。我不能只是按顺序放置两个 AsyncTask
,因为 Android 会将它们放在两个线程中并在第一个线程未完成的情况下启动第二个线程。如果没有适当的输入(第一个 httpRequest
的结果),我的第二个 httpRequest
将使应用程序崩溃。
有没有办法我可以输入一个 wait()
来强制第二个 AsyncTask
在第一个完成之前不要启动?
最佳答案
前几天我也遇到了同样的情况。 我以这种方式解决了它: 将 Activity 的引用传递给异步类的构造函数并在后台执行 do 函数。现在在执行后函数中,从异步类调用你的 Activity 的公共(public)方法以再次执行任务......或者试试这个:
if (asynclass.getStatus() == android.os.AsyncTask.Status.PENDING) {
asynclass.execute();
} else if (RF.getStatus() == android.os.AsyncTask.Status.FINISHED) {
asynclass = new asyncclass();
asynclass.execute();
} else {
Toast.maketoast(this, "Plz wait", 1).show();
}
干杯
关于java - 我可以按顺序链接异步任务吗(在前一个异步任务完成后开始一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7494515/