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