【问题标题】:AsyncTask For Setting Image Views用于设置图像视图的 AsyncTask
【发布时间】:2012-07-10 17:28:03
【问题描述】:

所以我一直在尝试使用 runOnUiThread() 和 View 之类的方法。

发布以更新我的图像视图,该视图不在主类之外,不扩展 Activity,但我一直遇到同样的问题:

第一次运行良好,但当我重新启动应用程序时,图像视图将不再更新。

我可以使用AsyncTask 类获取位图,然后使用该位图对其进行设置和图像视图吗?如果是这样,谁能给我一个例子?

【问题讨论】:

  • AsyncTask 在 onPreExecute() 和 onPostExecute() 之外没有引用 Main UI 线程。您必须做一些变通才能实现这一点,而 AsyncTask 在 doInBackground() 方法执行期间不会引发异常,该方法执行实际工作。

标签: android android-layout android-asynctask android-imageview


【解决方案1】:

如果你像这样扩展 AsyncTask

class ClassName 扩展 AsyncTask

您必须从 doInBackground() 返回一个位图,并且您将被覆盖 onPostExecute(Bitmap),它将在 UI 线程上运行,这意味着您可以将该位图设置为 ImageView。

【讨论】:

    【解决方案2】:

    仅在 worker thread 上调用 AsyncTasks 的 runInBackground() 方法。其他方法在 UI 线程上调用,因此您可以使用它来调用对 UI 的更改。

    您可以使用onPreExecute() 作为开始的进度条。

    您可以使用publishProgress(),正如它所说,发布您的任务进度,例如说您下载了多少百分比。

    您可以使用onPostExecute() 设置您的视图,例如位图或您可能已下载的文本片段。

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多