【发布时间】:2014-01-21 13:56:45
【问题描述】:
我正在开发 Android 应用程序,它使用推送通知来获取通知,即使应用程序已关闭并使用 sharedpreferences 保存它们,我已经创建了一个广播接收器类并初始化了我在另一个名为 Register 的类中定义的 sharedpreferences 对象 onReceive( ) 如下:
@Override
public void onReceive(Context context, Intent intent) {
// Register.preferences = context.getSharedPreferences(arg0, arg1);
// Register.listPreferences = context.getSharedPreferences(arg0, arg1);
Register.notificationList = new ArrayList<NotificationBody>();
Register.preferences = PreferenceManager
.getDefaultSharedPreferences(context);
Register.listPreferences= PreferenceManager
.getDefaultSharedPreferences(context);
String action = intent.getAction();
int getSize = Register.preferences.getInt("listSize", 0);
Editor edit = Register.listPreferences.edit();
当应用程序已经打开但是当应用程序关闭并且我尝试发送通知时,通知工作,应用程序显示强制关闭消息并且我在 logcat 中看到 NullPointerException,我想问题来自初始化sharedpreferences 对象,那么还有另一种方法可以在广播接收器中正确初始化该对象吗?
【问题讨论】:
-
这是另一个从活动扩展而来的类
-
这里为什么需要那个??
-
我需要它,因为当收到通知时,我会立即将其保存在共享首选项对象中。
-
您可以在活动中再次获得相同的共享偏好对象,无需从接收者那里引用它
标签: android broadcastreceiver sharedpreferences