订阅或绑定到现有的Intent服务

Fla*_*h99 5 android android-intent android-service intentservice

我有一个应用程序具有初始激活,列出列表视图中的一些文件.在列表中单击某个项目时,它会将您带到该特定文件的详细活动.

在详细视图中,我有一个名为download的按钮,当您单击下载时,它会启动一个IntentService,它会将要下载的文件设置为:

downloadButton.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(AppDetailsActivity.this, AppDownloadService.class);
        intent.putExtra(Consts.APP_DOWNLOAD_RECEIVER_KEY, new DownloadReceiver(new Handler()));
        startService(intent);
    }
});
Run Code Online (Sandbox Code Playgroud)

DownloadReceiver类用于更新下载文件详细活动中的进度条.

现在我想做什么......

如果用户当前正在从详细活动中下载文件,然后返回到上一个活动,我希望活动以某种方式订阅/绑定到同一个IntentService并检索结果,以便它可以在列表中显示进度条正在下载的文件的项目.

  1. 这可能使用IntentService吗?
  2. IntentService是正确的吗?
  3. 有没有例子(因为我没有找到任何显示我如何做的事情)?

Mig*_*iro 9

要下载,你一定可以使用IntentService.它运行在不同的线程上.另外,请记住,startService()多次调用IntentService它会创建一个队列并一次处理一个意图.

为了表明Activity我不相信广播的进展是正确的.尽管它们很可能是按顺序处理的,但框架或Android本身并不能保证交付时的订单.这意味着您可以获得50%的广播,然后播放40%的广播.为此,我建议您查看此示例:http://developer.android.com/reference/android/app/Service.html#LocalServiceSample

它看起来有点复杂,但你可以依靠双向沟通.