0

我正在使用 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(),立即或延迟一段时间。请帮助我。提前致谢。

4

2 回答 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 回答