Android Asyn任务';s onProgressUpdate方法未被一对一调用
我使用Asyn Task在后台做一些工作,然后使用onProgressUpdate()更新UI。问题是它没有被一对一调用,这意味着如果我在执行下一行代码之前调用它,有时它会被调用并完成工作,但有时它会在延迟后完成工作。Android Asyn任务';s onProgressUpdate方法未被一对一调用,android,android-asynctask,Android,Android Asynctask,我使用Asyn Task在后台做一些工作,然后使用onProgressUpdate()更新UI。问题是它没有被一对一调用,这意味着如果我在执行下一行代码之前调用它,有时它会被调用并完成工作,但有时它会在延迟后完成工作。我想知道,我们是否可以确保onProgressUpdate()必须在需要时执行,或者它取决于设备的cpu何时执行onProgressUpdate(),立即或延迟后。请帮助我。提前感谢。您必须在doInBackground内手动呼叫publishProgress 从Android文档
我想知道,我们是否可以确保onProgressUpdate()必须在需要时执行,或者它取决于设备的cpu何时执行onProgressUpdate(),立即或延迟后。请帮助我。提前感谢。您必须在doInBackground内手动呼叫publishProgress
从Android文档中
doInBackground(Params…),在onPreExecute()完成执行后立即在后台线程上调用。。。此步骤还可以使用publishProgress(进度…)发布一个或多个进度单元。这些值在UI线程的onProgressUpdate(Progress…)步骤中发布
调用onProgressUpdate()
时,请参考,实际上,您是在向处理程序发出请求,要求在另一个线程中运行代码和平
由安卓操作系统决定何时是切换线程的最佳时机,只有到那时代码才会运行
您可以通过请求当前线程暂停来强制执行线程
开关。例:
Thread.sleep(1);
但是,您无法确定下一个运行的线程是否是UI线程,其中将运行onProgressUpdate()
问候。对不起,先生,这里没有给出我问题的答案。我正在以同样的方式进行操作,但没有从onProgressUpdate()获得所需的功能。这意味着没有办法以我想要的方式实现onProgressUpdate()。很遗憾,有,但不是那么简单。您需要在共享对象周围使用sinchronized
块,并使AsynkTask在该对象上等待()
,直到onProgressUpdate()
完成并调用notify()
。如果使用不当,会导致死锁。