启动完成后,BroadcastReceiver in Service无法正常工作

时间:2012-07-02 05:45:47

标签: android service broadcastreceiver

启动完成后,我正在使用服务来监听广播。但是,引导完成后,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();

}

2 个答案:

答案 0 :(得分:0)

您必须在Manifest中注册BOOT_COMPLETED。从服务注册它是没有意义的,因为服务不会在启动时运行以便注册它。

答案 1 :(得分:0)

您无法在BOOT_COMPLETED内注册Service,因为重新启动会删除该注册。

您必须从BroadcastReceiver

开始

有许多方法可以处理启用/禁用功能 - 使用建议的setComponentEnabledSetting(),或者只是在应用的共享首选项中存储一个值,您可以在服务启动时检查该值。