如果我将以下内容用于我的ICS设备,它可以工作;
if(Build.VERSION.SDK_INT >= 11){ myTask.executeOnExecutor( AsyncTask.THREAD_POol_EXECUTOR,stuff );}
而在ICS之前则与此相反;
myTask.execute(stuff);
我知道ICS已将线程执行更改为序列化,但我无法弄清楚是什么阻碍了线程队列.
在eclipse中调试中列出了大约20个线程,但我已经读过,或许这是不正确的,因为调试器往往会继续显示那些不存在的线程.
我如何确定哪些线程正在阻止序列化队列,因此我不必从ICS上的默认值切换,甚至可能提高因ICSP设备无法看到由于线程池执行器而导致的问题的ICS前设备的性能是默认行为.
解决方法How do I figure out which threads are holding up the serialised queue
添加Log语句以跟踪进入和退出相关的doInBackground()方法.
and perhaps even improve performance of pre-ICS devices that arne’t seeing the problems due to the thread pool executor being default behavIoUr.
您不需要使用AsyncTask.只需分叉自己的线程并使用runOnUiThread()之类的东西作为在主应用程序线程上执行逻辑的方法. AsyncTask是一种方便,而非要求.并且,对于异常值高优先级的任务,您可以更有意义地将其远离任何线程池争用.
或者,克隆和分叉AsyncTask以使用PriorityQueue,因此您可以明确指出您的高优先级任务.
总结以上是内存溢出为你收集整理的Android AsyncTask在ICS上没有被召唤几分钟全部内容,希望文章能够帮你解决Android AsyncTask在ICS上没有被召唤几分钟所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)