在我的应用程序中,我的用户可以立即开始下载多个图像我使用线程下载进程并显示下载进度。我通过ThreadPoolExecutor运行多个线程。问题是当用户打开其中一个图像(活动进入后台)并且我失去了与正在运行的线程的连接。我如何才能恢复与线程的连接。
public void submitRunnableTask(Runnable task) {
if(!mPool.isShutdown() && mPool.getActiveCount() != mPool.getMaximumPoolSize()) {
mPool.submit(task);
} else {
new Thread(task).start();
}
}
答案 0 :(得分:1)
除了建议那些伟大的库(Picasso摇滚BTW)之外,我理解你的线程池与Activity的生命周期紧密耦合:当活动死亡时,线程池也是如此(或者更好,你放弃了对它,所以即使线程可能还活着,对你来说已经死了:)
我建议将你的ThreadPool提取到一个外部类 - 一个简单的Java singleton,或者更好的Android Service - 它可以比使用它的活动保持更长时间。
答案 1 :(得分:0)
我建议您使用Picasso进行图像下载,它使用起来非常简单且非常有效:(这是我最喜欢的libs之一)
Picasso.with(context).load(pictureUrl).into(imageView)