我正在使用 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(),立即或延迟一段时间。请帮助我。提前致谢。
问问题
279 次
2 回答
1
您必须手动从 doInBackground 中调用 publishProgress。
从 Android 文档,
doInBackground(Params...),在 onPreExecute() 完成执行后立即在后台线程上调用。... 这一步也可以使用 publishProgress(Progress...) 来发布一个或多个单位的进度。这些值在 UI 线程上的 onProgressUpdate(Progress...) 步骤中发布。
参考http://developer.android.com/reference/android/os/AsyncTask.html
于 2012-12-08T15:54:39.107 回答
1
当您调用onProgressUpdate()
时,实际上您是在向处理程序发布请求,以使代码在另一个线程中运行。
由 Android 操作系统决定何时是切换线程的最佳时机,然后您的代码才会运行。
您可以通过请求当前线程暂停以某种方式强制Thread
切换。前任:
Thread.sleep(1);
但是,您不能确定下一个运行的线程将是 UI 线程,onProgressUpdate()
将在哪里运行。
问候。
于 2012-12-08T15:58:31.717 回答