【问题标题】:How AsyncTask thread communicates with main thread? [closed]AsyncTask 线程如何与主线程通信? [关闭]
【发布时间】:2019-11-21 08:53:55
【问题描述】:

我想知道 android 主线程和 AsyncTask 之间的线程是如何发生的。 这两个线程如何相互通信?请用代码证明你的答案。

【问题讨论】:

  • 你的用例是什么?
  • 我想了解 AsyncTask 执行时内部发生了什么。
  • 那是完全不同的东西。那就看看源代码吧。
  • 我已经浏览了代码。但我无法找到代码开始获得控制权的点。如果你知道,请帮忙。
  • 我不知道你在哪里。

标签: java android android-asynctask


【解决方案1】:

AsyncTask 类有一个在工作线程中运行的 doInBackground 方法和一些其他主要方法,可用于在不同场合与 UI 线程进行交互。

onPreExecute 在调用 doInBackground 方法之前执行,您可以在执行操作之前使用它来更新 UI,例如。显示进度条

onPostExecute 在操作完成运行后执行,您可以使用从 doInBackground 检索到的新数据更新 UI,例如。显示您从服务器获取的对象列表

onProgressUpdate 每次调用 publishProgress 时都会执行以通知用户正在进行的操作状态

更多解释和其他方法如 onCancel 使用案例可以在开发者文档中找到:

https://developer.android.com/reference/android/os/AsyncTask

【讨论】:

  • 我想知道当我们调用 AsyncTask.execute() 方法时,新线程是如何创建的
  • @RameswarTarai AFAIK 没有干净的方法可以自己处理线程。 AsyncTask 类自己处理它。但是,有两种类型的执行器:SerialExecutor 和 ThreadPoolExecutor,您可以将它们与 executeOnExecutor 方法一起使用。
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
相关资源
最近更新 更多