我有一个广播接收器类,可以在手机重启时成功运行。我的问题是,当我尝试从SharedPreferences检索信息时,代码停止运行,没有任何继续。这是onReceive方法的开始:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
if(sp.getBoolean("alarmRunning", false)) {
Log.d("test", "Fixing alarms1");
String name = sp.getString("currentName", "");
String description = sp.getString("currentDescription", "");
long exactTriggerTime = sp.getLong("exactTriggerTime", 0);
long offsetTriggerTime = sp.getLong("offsetTriggerTime", 0);
String intentNameExtra = sp.getString("intentNameExtra", "");
String intentDescriptionExtra = sp.getString("intentDescriptionExtra", "");
boolean runOnce = sp.getBoolean("runOnce", true);
long interval = sp.getLong("interval", 0);
long totalOffset = sp.getInt("totalOffset", 0);
Log.d("test", "Fixing alarms");
Log.d("test", String.valueOf(runOnce));
当我在手机上运行时,我将“Fixing alarms1”返回给我,但不是“修复警报”或runOnce变量的值。有人可以解释这种行为吗?它不应该因为找不到东西而破坏,因为一切都有默认值。我还使用测试过滤器和没有过滤器检查了控制台,并且没有显示错误消息。
编辑:经过进一步的测试,我意识到它不喜欢从SharedPreferences中获取一个int变量并将其分配给long。我的坏。