Java IntentService中的广播接收机

Java IntentService中的广播接收机,java,android,android-broadcastreceiver,android-intentservice,Java,Android,Android Broadcastreceiver,Android Intentservice,我正在尝试在我的IntentService的OnHandleContent()方法中注册DownloadManager.ACTION\u DOWNLOAD\u COMPLETE receiver,并在IntentService的onDestroy()方法中注销该接收器。但是我认为它没有被注册,因为一旦下载完成,接收器的onReceive()方法就不会被触发。 有人能帮我吗?下面的代码是: } } 在清单中创建服务 创建服务类 public class ConnectionBroadReceive

我正在尝试在我的IntentService的OnHandleContent()方法中注册DownloadManager.ACTION\u DOWNLOAD\u COMPLETE receiver,并在IntentService的onDestroy()方法中注销该接收器。但是我认为它没有被注册,因为一旦下载完成,接收器的onReceive()方法就不会被触发。 有人能帮我吗?

下面的代码是:

}

}

在清单中创建服务

创建服务类

public class ConnectionBroadReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        ConnectivityManager cm = (ConnectivityManager)
                context.getSystemService(Context.CONNECTIVITY_SERVICE);
        IConnectionCallback callback = (IConnectionCallback) context;
        callback.finishDownload();
}
在活动中,

    ConnectionBroadReceiver broadReceiver = new ConnectionBroadReceiver();
    registerReceiver(broadReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
创建接口,并在活动中实现,并定义下载后要执行的功能

    public interface IConnectionCallback {
     void finishDownload();

  }
并最终在舱单中注册服务

    <receiver android:name=".ConnectionBroadReceiver">


onHandleIntent()结束后,
IntentService
将立即销毁。一个写得好的
IntentService
只会运行一段时间,所以你只会收到一段时间的广播。哦,好的。既然我需要在后台下载文件,那么还有什么替代解决方案呢?既然我不知道你在使用
IntentService
做什么,我就不能告诉你答案是“不要使用
IntentService
”还是“在其他地方注册你的接收者,比如在清单上”.基本上,我想运行一个定时服务(比如每24小时一次),在该服务中,我将使用DownloadManager下载文件。因此,在我使用的IntentService中,如何注册和注销接收者?在清单中注册接收者。如果您愿意,请在其上设置
android:enabled=“false”
,然后让您的
IntentService
在需要时使用
setComponentEnabledSetting()
来启用它。写一篇关于链接所包含内容的摘要。将来,如果您要在答案中复制/粘贴代码,则链接可能会一直处于“添加属性”状态。此外,不鼓励只使用代码的答案,请添加此代码如何解决问题的说明!
    ConnectionBroadReceiver broadReceiver = new ConnectionBroadReceiver();
    registerReceiver(broadReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
    public interface IConnectionCallback {
     void finishDownload();

  }
    <receiver android:name=".ConnectionBroadReceiver">