我面临有关 AsyncTasks 执行顺序的问题。
我的问题是:
假设我有 AsyncTask 的 2 个实现:我的异步任务1 and 我的异步任务2
按以下方式调用:
new MyAsyncTask1 ().execute ();
new MyAsyncTask2 ().execute ();
是否保证我的异步任务1之前执行过我的异步任务2?
可以肯定的一件事是,它们不会并行执行,因为使用了默认执行器,即串行执行器。
问题在于执行顺序:哪个先执行?
如果执行顺序未确定,如何强制执行 AsyncTasks 的顺序?
我需要的是拥有我的异步任务1之前执行过我的异步任务2,情况并非总是如此,尽管我正在调用执行我的异步任务1 before 我的异步任务2.
我实际上拥有的是自定义活动:
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 );
}
}
所以如果我使用主要活动, 我的异步任务1应该在之前执行我的异步任务2,至少这是我需要的行为。
确保两个线程(这就是 AsyncTasks 基本上)按照您想要的顺序执行的唯一方法是在第一个线程完成时启动第二个线程。
在您的情况下,要保持实现抽象化,而不必实际调用 AsyncTask2onPostExecute
AsyncTask1(Anup 和 Sanket 建议的方式,如果您想混合使用它们也可以),进行 AsyncTask1 调用super.executeAsyncTask2()
, where executeAsyncTask2()
是 CustomActivity 中启动第二个 AsyncTask 的方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)