Android中的线程池,直接调用doinbackground

时间:2019-07-13 23:10:33

标签: android multithreading

如果我直接调用doInBackground,通过将其公开并用某些功能覆盖它,它的执行速度比我自己创建线程要快得多-这样做不好吗?

1 个答案:

答案 0 :(得分:1)

开发人员指南说:

请勿手动调用onPreExecute(),onPostExecute(Result),doInBackground(Params ...),onProgressUpdate(Progress ...)。

因此,手动调用doInBackground(Params)确实是一个坏习惯。

以下是一些规则:

必须在UI线程上加载AsyncTask类。自Build.VERSION_CODES.JELLY_BEAN起自动完成。

必须在UI线程上创建任务实例。

execute(Params ...)必须在UI线程上调用。

请勿手动调用onPreExecute(),onPostExecute(Result),doInBackground(Params ...),onProgressUpdate(Progress ...)。

该任务只能执行一次(如果尝试第二次执行,则会引发异常。)

不幸的是,没有清晰的文档说明为什么不应该手动调用任何方法,但是主要原因可能是,如果手动调用doInBackground(),则代码可能会在您的主线程而不是后台线程中执行。

...这样做不好吗?

答案:是的!