如果我直接调用doInBackground,通过将其公开并用某些功能覆盖它,它的执行速度比我自己创建线程要快得多-这样做不好吗?
答案 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(),则代码可能会在您的主线程而不是后台线程中执行。
...这样做不好吗?
答案:是的!