Android从AsyncTask中调用来自不同类的方法

时间:2015-09-17 15:19:20

标签: java android multithreading android-asynctask

在Asynctask中我调用一个方法,我的意思是在doInBackgroud() { ...code goes here ... }内,我称之为一个方法..

A)..在异步任务类

B)..在另一个班级

这个方法调用是否仍然在asynctask的线程中执行?

我很想知道,因为经常会说"只有doInBackgroud() { ...code goes here ... }内的代码才会在另一个帖子中执行。

3 个答案:

答案 0 :(得分:1)

是的,方法调用在asynctask的线程中执行。如果无法在其他类上调用方法,则asynctask将毫无用处。 此外,如果doInBackground方法(经常用于发出Web请求)将在主线程中运行,则Android将抛出异常(NetworkOnMainThreadException)。

答案 1 :(得分:1)

  

我很想知道,因为人们经常说“只有doInBackgroud()代码里面的代码......代码才会在这里...}在不同的线程中执行。

启动应用程序时,会创建一个称为UI线程的线程(也称为“主”线程)。该线程将所有事件分派给小部件以及应用程序上的诸如此类内容。

AsyncTask将在UI线程上执行onPreExecuteonPostExecute。另一方面的doInBackground()在后​​台线程上调用,一旦完成就会返回主线程。

答案 2 :(得分:1)

doInBackground()内的(直接或间接)调用会自动在后台线程中运行。

有一些方法可以强制某些代码在主UI线程中运行(例如,请参阅this question),但这必须明确完成。