我保留了一个静态共享偏好来访问来自多个活动的值。
现在,我已经设置了在某个时间响起的闹钟。现在在那个广播接收器中,我正在尝试访问共享的 pref 变量。
它已经在另一个活动中初始化并在那里返回正确的值。
但是在这个广播接收器中,它没有给出实际值。它给出了未初始化的值。
既然它是静态的,值不应该保持不变吗?
这是共享偏好类。
package com.footballalarm.invincibles;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
public class SessionManagement {
// Shared Preferences
public static SharedPreferences pref;
// Editor for Shared preferences
public static Editor editor;
// Context
Context _context;
// Shared pref mode
int PRIVATE_MODE = 0;
// Shared pref file name
private static final String PREF_NAME = "invincibles_alarm";
// All Shared Preferences Key
public static final String PREF_MATCH = "match";
// Constructor
public SessionManagement(Context context){
this._context = context;
pref = _context.getSharedPreferences(getPrefName(), PRIVATE_MODE);
editor = pref.edit();
editor.commit();
Log.e("Pref Match Value-constructor for pref", getValueMatch());
}
public static void fillValues(String match){
try{// Storing login value as TRUE
editor.putString(PREF_MATCH, match);
// commit changes
editor.commit();
Log.e("Pref Match Value-in fill values", getValueMatch());
}
catch(Exception e)
{Log.e("fillValues", e.toString());}
}
public static String getValueMatch(){
return pref.getString(PREF_MATCH, "Loading Match");
}
public static String getPrefName() {
return PREF_NAME;
}
}
我试图在其他活动中记录输出并正确返回。
当我运行应用程序然后在警报发生之前将其关闭时,由于广播接收器无法访问共享首选项,程序会因空指针异常而崩溃。
我已经尝试过这个解决方案 - BroadcastReceiver 中的 SharedPreferences 似乎没有更新?但我只在清单中为接收者使用名称。
仅当我通过最小化菜单在 ICS 中关闭我的应用程序时才会发生这种情况。