我有一块图像想要加载到屏幕上。所有图像都是我下载并存储在 SD 卡上的文件。
到目前为止,我找到了两种方法来做到这一点,首先是在活动开始时将它们加载到主线程上(我得到了大约 70 张图像,大约需要 2.1 秒才能加载它们)。
另一种方法是我现在正在测试的。将它们加载到单独的线程上,因此同时我可以为用户显示加载动画。现在我的实现线程池执行器 http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html花了 4.3 秒。我是用 10 个线程完成的。
最后一种方法(这是我唯一尚未测试的方法)是使用精灵表。
我无法使用应用程序缓存,因为在我的应用程序中我有很多屏幕,并且每个屏幕都有自己的图像集。
您认为加载大量图像最快的方法是什么以及您知道哪些加速技术可以帮助我?
-
不要在主线程上加载。延迟 2.1 秒后,如果您阻塞主线程,您几乎会因 ANR(应用程序未响应)错误而被杀死。
-
在单独的线程中加载。不要创建 10 个线程,而是创建一个异步任务 http://developer.android.com/reference/android/os/AsyncTask.html,然后依次加载所有图像后台操作 http://developer.android.com/reference/android/os/AsyncTask.html#doInBackground%28Params...%29.
AsyncTask 中的加载时间应该与主线程中的加载时间(几乎)相同。不要放太多花哨的动画,这样主线程就不会消耗太多的CPU时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)