我遇到了一个关于AsyncTasks执行顺序的问题。
我的问题是:
假设我有两种AsyncTask的实现: MyAsyncTask1 和 MyAsyncTask2
它们是以以下方式调用的:
new MyAsyncTask1 ().execute ();
new MyAsyncTask2 ().execute ();
保证MyAsyncTask1在MyAsyncTask2之前执行吗? 可以确定的是,它们不会并行执行,因为使用了默认的执行器,即SERIAL_EXECUTOR。 问题在于执行顺序:哪个任务会先执行?
如果执行顺序未确定,如何强制执行AsyncTasks的顺序?
我需要的是让MyAsyncTask1在MyAsyncTask2之前执行,这并不总是发生,即使我在MyAsyncTask2之前调用了MyAsyncTask1的execute方法。
实际上,我有一个自定义活动:
public abstract class CustomActivity extends Activity {
@Override
protected void onCreate ( Bundle savedInstanceState ) {
super.onCreate ( savedInstanceState );
new MyAsyncTask2 ().execute ();
}
}
还有一个继承自自定义活动的活动:
public class MainActivity extends CustomActivity {
@Override
protected void onCreate ( Bundle savedInstanceState ) {
new MyAsyncTask1 ().execute ();
super.onCreate ( savedInstanceState );
}
}
所以如果我使用MainActivity,MyAsyncTask1 应该在 MyAsyncTask2 之前执行,至少这是我需要的行为。
onPostExecute
中启动MyAsyncTask2,这样MyAsyncTask2总是在MyAsyncTask1之后执行。 - ρяσѕρєя Kcontext.getPackageManager().getClass();
来获取用户当前查看的活动名称。 - ρяσѕρєя K