我有一个具有意图过滤器的广播接收器: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);