Ily*_*man 7 android load bitmap
我有一块想要在屏幕上加载的图像.所有图像都是我下载并存储在SD-CARD上的文件.
到目前为止,我发现了两种方法,首先是在活动开始时将它们加载到主线程上(我得到了大约70个图像,所有加载它们需要大约2.1秒).
另一种方式是我现在正在测试的.将它们加载到分离的线程上,同时我可以为用户显示加载动画.现在我使用ThreadPoolExecutor实现了4.3秒.我在10个线程上做到了.
最后一种方法,(这是我唯一没有测试的方法)是使用精灵表.
我不能使用应用程序缓存,因为在我的应用程序中我有很多屏幕,每个屏幕都有自己的图像集.
您怎么看?加载大量图像的最快方法是什么?您知道哪些加速技术可以帮助我?
不要加载主线程.如果你阻止主线程,你有2.1秒的延迟,你接近被ANR(app无响应)错误杀死.
在单独的线程中加载.不要创建10个线程,而是创建一个AsyncTask,并在doInBackground中依次加载所有图像.
在AsyncTask中加载应该与主线程中的加载(几乎)相同.不要放太多花哨的动画,这样主线程不会消耗太多的CPU时间.
一种选择是使用 WeakReference 创建图像缓存,以便在系统遇到内存不足的情况时从内存中删除图像。这样您就可以将图像保留在内存中,并且仅当图像不在内存中时才需要从 SD 卡加载。因此,您当前的活动将始终保留对所需位图的硬引用,而图像缓存将保留对位图的弱引用。
以下是有关弱引用的更多信息:
| 归档时间: |
|
| 查看次数: |
6249 次 |
| 最近记录: |