[英]BroadcastReceiver in Service is not working after boot completed
I am using a Service to listen for a broadcast after boot completed. 启动完成后,我正在使用服务来收听广播。 But the BroadcastReceiver is not registering when boot completed.
但是,启动完成后,BroadcastReceiver不会注册。 If instead of a Service I use a BroadcastReceiver to listen for boot completed it works.
如果我使用BroadcastReceiver代替Service来侦听引导完成,则它可以工作。 It doesn't when I register it with a Service.
当我向服务注册时没有。 What am I doing wrong?
我究竟做错了什么? Code is given below.
代码如下。
private BroadcastReceiver sim_change;
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
IntentFilter filter = new IntentFilter();
filter.addAction(action);
sim_change = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Boradcast Receiver registered successfully", Toast.LENGTH_LONG).show();
}
};
registerReceiver(sim_change, filter);
}@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(sim_change);
Toast.makeText(getApplicationContext(), "Boradcast Receiver unregistered successfully", Toast.LENGTH_LONG).show();
}
You have to register for BOOT_COMPLETED
in your Manifest. 您必须在清单中注册
BOOT_COMPLETED
。 It doesn't make sense to register for it from a Service, because the Service won't be running at boot in order to register for it. 从服务中注册它没有任何意义,因为该服务不会在启动时运行以进行注册。
You can't register for BOOT_COMPLETED
from within a Service
because the reboot removes that registration. 您无法从
Service
注册BOOT_COMPLETED
,因为重新启动会删除该注册。
You must do it from your BroadcastReceiver
. 您必须从
BroadcastReceiver
执行此操作。
There are many ways to handle the enable/disable feature - either using the suggested setComponentEnabledSetting()
, or just by storing a value in the app's shared preferences, which you can check when your service starts. 有多种处理启用/禁用功能的方法-使用建议的
setComponentEnabledSetting()
,或仅通过将值存储在应用程序的共享首选项中,即可检查服务何时启动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.