我正在使用Asyn Task在后台做一些工作,然后我使用onProgressUpdate()更新UI。问题是它不是一对一调用,意味着我此时调用它本身下一行代码的执行,有时会被调用并完成其工作,但有时它会在一段延迟后完成其工作。I want to know that can we make it sure that the onProgressUpdate() must execute when we want it
或者它取决于设备的cpu,以及何时执行onProgressUpdate(),立即或经过一段时间的延迟。请帮帮我。谢谢。
答案 0 :(得分:1)
您必须手动在doInBackground中调用publishProgress。
来自Android文档,
doInBackground(Params ...),在onPreExecute()完成执行后立即在后台线程上调用。 ...此步骤还可以使用publishProgress(Progress ...)发布一个或多个进度单位。这些值发布在UI线程的onProgressUpdate(Progress ...)步骤中。
参考http://developer.android.com/reference/android/os/AsyncTask.html
答案 1 :(得分:1)
当您致电onProgressUpdate()
时,实际上您正在向处理程序发送请求,以便在另一个线程中运行代码。
由Android操作系统决定什么时候是最好的调整切换线程,然后才能运行代码。
您可以通过请求当前线程暂停来以某种方式强制Thread
切换。例如:
Thread.sleep(1);
但是,您无法确定下一个正在运行的线程是否将运行onProgressUpdate()
的UI线程。
问候。