启动完成广播接收者上下文参数

问题描述 投票:0回答:1

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

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));
        }
    }
}

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

android broadcastreceiver android-broadcast
1个回答
4
投票

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

但是,您在接收器中收到的上下文受到限制:它无法调用

registerReceiver()
bindService()

有关不同类型上下文的更多信息可以在此处找到。

© www.soinside.com 2019 - 2024. All rights reserved.