我正在开发一个可以在设备启动完成时启动的服务,我正在设置一个首选项文件来存储服务运行状态,这样我就可以在我需要的时候在我的广播接收器中检索它:
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()方法中的参数,因为当设备关闭时,应用程序及其所有组件将被销毁,接收器中传递了哪个上下文,我的应用程序的组件实际上是否正在接收它?
答案 0 :(得分:2)
在调用BroadcastReceiver之前,Android会创建应用程序的应用程序上下文。如果你有自己的类继承了Application并在onCreate上放了一个Log on,那么你实际上可以看到这种情况发生。
但是,您在Receiver中收到的背景信息受到限制:它无法拨打registerReceiver()
或bindService()
。
可以找到有关不同类型的上下文的更多信息here。