首先执行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同时执行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)