中断从IntentService启动的特定Thread

时间:2014-06-27 14:49:42

标签: android multithreading intentservice

我试图将多个文件从我的服务器下载到我的设备。

以下是我所做的:

活动

...
Intent intent = new Intent(this, DownloadService.class);
intent.putExtra(DownloadService.URL, url);
startService(intent);

DownloadService类

public class DownloadService extends IntentService {
...
    @Override
    protected void onHandleIntent(final Intent intent) {
        new Thread(new Runnable() {
        @Override
        public void run() {
            // Download code...
        }
    }).start();
}

我的 IntentService 可以从任何活动多次启动(例如我想下载file0,file1,...,fileN):那个' s为什么我在 onHandleIntent 中使用主题,以便单独下载。

这是我的问题:如何取消/中断从IntentService启动的特定线程的下载?下载过程中没有UI更新,但只有带进度条的通知,当然是从Thread更新。

文件的大小可以是1GB,我试图撤消此下载。

编辑1:

DownloadManager 非常有用,我知道,但我的文件由多个子文件组成,这些子文件在运行时由服务器逐个创建。我已经尝试过这种方式,但这不是我想要的。

1 个答案:

答案 0 :(得分:0)

最后我设法解决了我的问题。

正如@CommonsWare所建议的那样(再次感谢!)我创建了一个Service而不是IntentService,并且我通过{{每次调用的特定类中的ThreadPoolExecutor来管理我的多个线程1}}。

长话短说:我跟着this Google guide,我受到ThreadSample项目的启发。