启动完成后,我正在使用服务来监听广播。但是,引导完成后,BroadcastReceiver没有注册。如果不是服务我使用BroadcastReceiver来监听启动完成它的工作原理。当我向服务注册时,它不会。我究竟做错了什么?代码如下。
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();
}
答案 0 :(得分:0)
您必须在Manifest中注册BOOT_COMPLETED
。从服务注册它是没有意义的,因为服务不会在启动时运行以便注册它。
答案 1 :(得分:0)
您无法在BOOT_COMPLETED
内注册Service
,因为重新启动会删除该注册。
您必须从BroadcastReceiver
。
有许多方法可以处理启用/禁用功能 - 使用建议的setComponentEnabledSetting()
,或者只是在应用的共享首选项中存储一个值,您可以在服务启动时检查该值。