每次我做一个httpRequest
,当代码执行时,屏幕会被锁定几秒钟。因此我用了AsyncTask
做我所有的httpRequest
东西在一个单独的线程,同时提出ProgressDialog
所以用户知道发生了什么事。
我最近遇到了以下情况:我的一位的输入httpRequest
取决于之前的结果httpRequest
(+解析)动作。我不能只把这两个AsyncTask
s 顺序导致 Android 会将它们放入两个线程中并启动第二个线程,而第一个线程尚未完成。并且没有适当的输入(第一个的结果httpRequest
),我的第二个httpRequest
会使应用程序崩溃。
有什么办法我可以把wait()
强制第二个AsyncTask
直到第一个完成才开始?
前几天我也遇到了同样的情况。
我是这样解决的:
将您的活动的引用传递给异步类的构造函数并在后台函数中执行 do 。现在,在执行后函数中,从异步类调用您的活动的公共方法以再次执行任务...或尝试以下操作:
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();
}
Cheers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)