nmx*_*ime 11 android executorservice android-asynctask threadpoolexecutor
我正在使用asyncTasks,用图像加载列表元素(只需按照android的有效加载位图的教程)
在DDMS中,我可以看到最多5个AsyncTasks正在运行
此外,我还添加了另一个AsyncTask,它使用MediaCodec类执行一些解码.
现在在DDMS中,我仍然看到5个AsyncTasks,我的图像加载aynctask或解码异步任务执行,而不是两个.
当解码正在运行时,如果我滚动列表,元素的图像不会更新当我通过调用它的执行方法启动新的解码asynctask时,解码不会启动,但如果我现在滚动列表视图,图像会更新.
那么AsyncTask是否有限制?
即使在listAdapter中,我也会根据getView调用启动AsyncTask.我期待7个运行asyncTasks(如果列表可见元素是7,比方说),但DDMS只显示5个asynctasks正在运行.
现在有人可以解释一下我无法拼写的黑魔法是什么吗?
Com*_*ish 20
你AsyncTasks
能一次跑多少次?
在大多数Android版本中,答案是128.
你为什么一般会看到5个AsyncTask
线程?
AsyncTask
线程管理相当混乱,特别是因为自第一个Android发布以来它已经发生了很大变化.
在较新的Android版本中,默认情况下会创建5个线程,并且ThreadPoolExecutor
将尝试AsyncTask
在这5个线程上运行s.如果创建的时间超过5 AsyncTask
秒,则可以将它们排队或创建新线程(但最多只能创建128个).
请注意,在早期版本的Android中,这些限制是不同的.我相信,最初只创建了一个线程.
但是你的所有图像最终都应该加载......
要回答你的问题的另一部分,除非你加载大量的图片(其中很多是指> 128),所有图像应加载,但可能顺序.如果前5次加载而其余没有加载,则可能表示您的doInBackground()
功能永远不会完成或者AsyncTask
您正在使用其他错误.
资源:
以下是一些有用的资源,可用于了解有关AsyncTask
线程管理
归档时间: |
|
查看次数: |
8871 次 |
最近记录: |