我们的Android应用程序进行了大量的图像解码。我们从互联网,本地存储缓存等中获取大量图像。
到目前为止,这些图像正在UI线程上解码(使用BitmapFactory.decodeX()方法)。它导致了一些超时崩溃,因为UI对用户输入的响应不够快。
我可以编写一个封装解码的AsyncTask,但我不确定这是个好主意。产卵线程很昂贵,而且会产生并撕裂它们。
那么将它放在另一个线程上的最佳方法是什么?我是否需要去编写服务?这看起来有点重量级。那里有没有解决方案呢?
答案 0 :(得分:2)
AsyncTask保留了一个线程池,因此您不需要花费太多成本来使用AsyncTasks的多个实例。使用AsyncTask或使用带有请求队列的单个线程来解码图像。
答案 1 :(得分:1)
您可以使用IntentService
排队下载/解码,只需同时为每张图片调用startService()
,它就会一次执行一次。然后您可以使用ResultReceiver