Android 在UI线程上加载和创建AsyncTask有什么区别?
在阅读关于线程规则的部分时,我发现:Android 在UI线程上加载和创建AsyncTask有什么区别?,android,android-asynctask,Android,Android Asynctask,在阅读关于线程规则的部分时,我发现: 必须在UI线程上加载AsyncTask类。这已经完成了 就像果冻豆一样 必须创建任务实例 在UI线程上 必须在UI线程上调用execute(参数…) “加载”是什么意思?它不是实例化或执行,正如文档稍后讨论的那样。我不认为这是正确的 文档单独列出实例化和加载是没有意义的,如果它们实际上是相同的。我相信这种说法 必须在UI线程上加载AsyncTask类 指的是。换句话说,AsyncTask类本身需要加载到主线程上。在果冻豆(或更高版本)中,这是自动的。但是
- 必须在UI线程上加载AsyncTask类。这已经完成了 就像果冻豆一样李>
- 必须创建任务实例 在UI线程上
- 必须在UI线程上调用execute(参数…)
AsyncTask
类本身需要加载到主线程上。在果冻豆(或更高版本)中,这是自动的。但是,在旧版本的Android中,这个类有可能被加载到另一个线程上,这可能会导致问题
了解更多信息。基本上,有一些条件(例如,使用IntentService
的代码)会导致AsyncTask
首先加载到错误的(非主)线程上
在使用果冻豆之前,最简单的修复方法似乎是使用以下内容:
Class.forName("android.os.AsyncTask");
在应用程序中,强制在需要时加载类
创建
AsyncTask
实例可能就是您认为的那样。。。举例说明:
MyAsyncTask task = new MyAsyncTask();
这也应该在主线程上运行