【发布时间】:2021-11-01 10:49:01
【问题描述】:
我试图通过 android 提供的关于 AsyncTask 的文档,尽管它有点难以理解,但我遇到的是 AsyncTask 正常工作的线程规则。
我把链接贴在这里; https://developer.android.com/reference/android/os/AsyncTask.html#threading-rules
这里是规则;
要使此类正常工作,必须遵循一些线程规则:
-
必须在 UI 线程上加载 AsyncTask 类。这是从 Build.VERSION_CODES.JELLY_BEAN 开始自动完成的。
-
任务实例必须在 UI 线程上创建。
-
execute(Params...) 必须在 UI 线程上调用。
-
不要手动调用 onPreExecute()、onPostExecute(Result)、doInBackground(Params...)、onProgressUpdate(Progress...)。
-
该任务只能执行一次(如果尝试第二次执行,将抛出异常。)
我也理解规则 2、3 和 4。
我不明白的是规则 1 和 5。
扩展 AsyncTask 的类是在 UI 线程上创建的实例(例如 onCreate()) - 规则 2
他们想在规则 1 中表达什么?
它是如何在我们不提的情况下自动加载的?
按照规则 5,他们是说,扩展 AsyncTask 的类的单个实例可以执行一次,如果我们想再执行一次,我们是否必须创建同一个类的另一个实例?
谢谢
【问题讨论】:
-
如果你被 Java 卡住了,here's an alternative to AsyncTask。你不应该再使用 AsyncTask 了。
标签: java android multithreading android-asynctask android-threading