我有一个具有意图过滤器的广播接收器:ACTION_POWER_CONNECTED。接收方应该开始服务。当尚未重启设备时,接收器的性能很好,但是一旦我重启设备并插入设备,应用力就会关闭。在我的接收器中,我引用了另一个活动的静态变量。为什么应用程序会强制关闭?

“ dataSaved”是MainActivity中的SharedPreferences变量

if (MainActivity.dataSaved.getBoolean("User", false)) {
    Intent i = new Intent(context, BatteryService.class)
    context.startService(i);
}

最佳答案

您说dataSaved是静态的SharedPreference,它没有初始化,所以getBoolean抛出NullPointerException。您在MainActivity中的某个位置对其进行了初始化,但是在重新启动后没有MainActivity对其进行初始化

在接收者中获得共享优先

SharedPreferences dataSaved = context.getSharedPreferences("prefs",  Context.MODE_PRIVATE);
 boolean isUser = dataSaved.getBoolean("User", false);

07-28 04:33