【问题标题】:Get back running threads on returning back to activity in Android在返回到 Android 中的活动时返回正在运行的线程
【发布时间】:2015-07-11 05:50:34
【问题描述】:

在我的应用程序中,我的用户可以一次开始下载多个图像,我使用线程进行下载过程并显示下载进度。我正在通过 ThreadPoolExecutor 运行多个线程。问题是当用户打开其中一个图像(活动进入后台)并且我失去与正在运行的线程的连接时。我如何才能恢复到线程的连接。

public void submitRunnableTask(Runnable task) {
    if(!mPool.isShutdown() && mPool.getActiveCount() != mPool.getMaximumPoolSize()) {
        mPool.submit(task);
    } else {
        new Thread(task).start();
    }
}

【问题讨论】:

    标签: android threadpool


    【解决方案1】:

    除了建议那里有很棒的库(毕加索摇滚顺便说一句)之外,我了解您的线程池与 Activity 的生命周期紧密耦合:当 Activity 死亡时,线程池也会如此(或者更好的是,您失去了对它,所以即使线程可能还活着,对你来说它已经死了:)

    我建议将您的 ThreadPool 提取到一个外部类 - 一个普通的 Java singleton 可能,或者更好的是一个 Android Service - 它可以比使用它的活动保持更长时间。

    【讨论】:

      【解决方案2】:

      我建议你使用 Picasso 来下载图片,它使用起来非常简单而且非常有效:(它是我最喜欢的库之一)

      square.github.io/picasso/

      Picasso.with(context).load(pictureUrl).into(imageView)

      【讨论】:

      • 我使用 Picassa 显示图像预览,我还想将图像下载到本地存储,以便也能够在离线模式下显示它们。
      • 毕加索也是离线的,如果你想在下载的时候保存,可以使用CallBacks来保留Bitmap,此时保存
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多