引导完成广播接收器上下文参数

时间:2016-11-25 10:59:42

标签: android broadcastreceiver android-broadcast android-broadcastreceiver

我正在开发一个可以在设备启动完成时启动的服务,我正在设置一个首选项文件来存储服务运行状态,这样我就可以在我需要的时候在我的广播接收器中检索它:

public class MyServiceBootReceiver extends BroadcastReceiver {
public MyServiceBootReceiver() {super();}

@Override
public void onReceive(Context context, Intent intent) {
    if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
        if(MyService.isRunning(context)) //static method to get shared preferences value
        context.startService(new Intent(context, MyService.class));
    }
}

}

现在我对" context"感到困惑。 onReceive()方法中的参数,因为当设备关闭时,应用程序及其所有组件将被销毁,接收器中传递了哪个上下文,我的应用程序的组件实际上是否正在接收它?

1 个答案:

答案 0 :(得分:2)

在调用BroadcastReceiver之前,Android会创建应用程序的应用程序上下文。如果你有自己的类继承了Application并在onCreate上放了一个Log on,那么你实际上可以看到这种情况发生。

但是,您在Receiver中收到的背景信息受到限制:它无法拨打registerReceiver()bindService()

可以找到有关不同类型的上下文的更多信息here