android – 两个不同的AsyncTasks同时执行

android – 两个不同的AsyncTasks同时执行,第1张

概述我有两个完全不同的AsyncTask实现,比如说AT1和AT2. 首先执行AT1,然后执行AT2. AT1在doInBackground中等待,直到AT2通过每500毫秒轮询一次数据完成任务.但这从未发生过. 所以我基本上想要的是: 但似乎发生的事情是: 除了AT1从未完成,AT2永远不会启动. 有没有办法可以强制这两个AsyncTasks在两个单独的线程上执行,还是有另一个解决方案呢? 首先启动 我有两个完全不同的AsyncTask实现,比如说AT1和AT2.

首先执行AT1,然后执行AT2. AT1在doInBackground中等待,直到AT2通过每500毫秒轮询一次数据完成任务.但这从未发生过.

所以我基本上想要的是:

但似乎发生的事情是:

除了AT1从未完成,AT2永远不会启动.

有没有办法可以强制这两个AsyncTasks在两个单独的线程上执行,还是有另一个解决方案呢?

首先启动AT2是不可能的,然后执行AT1.

编辑
为了澄清:AT1在用户打开特定屏幕时执行,并且需要根据位置下载该屏幕的数据. AT2在位置更改时执行,当发生这种情况时,会进行一些无法在UI线程上完成的计算.

当AT2从未执行过时,AT1没有下载数据的位置,因此需要等待AT2完成.当AT2执行时,位置数据已经存在,AT1不需要等待.

此外,这个问题发生在ICS,而不是在Android 2.3中,如this answer所示.

解决方法 当我发布这个问题时,this question出现在相关部分.
它建议使用executeOnExecutor,我已经实现了如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {    new SetLocationAsyncTask().executeOnExecutor(AsyncTask.THREAD_POol_EXECUTOR,location);} else {    new SetLocationAsyncTask().execute(location);}
总结

以上是内存溢出为你收集整理的android – 两个不同的AsyncTasks同时执行全部内容,希望文章能够帮你解决android – 两个不同的AsyncTasks同时执行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存