Android应用程序崩溃电话启动

时间:2012-10-20 20:44:27

标签: android service sharedpreferences

我有权接收启动,我已指定运行哪个接收器。

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<receiver android:name="xyz.android.MyAlarm" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

这是接收者代码

public class MyAlarm extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, InviteService.class);
    context.startService(i);        
}
}

以下是我的InviteService服务代码的片段

public class InviteService extends IntentService {

private String userId;
private SharedPreferences settingsPrefs;

public InviteService() {
    super("InviteService");
}

@Override
protected void onHandleIntent(Intent intent) {

    if (Utils.isOnline(this)) {
        userId = getSharedPreferences("user-session", MODE_PRIVATE)
                .getString("userId", null);
        settingsPrefs = getSharedPreferences(userId, MODE_PRIVATE);

        Log.d("turnOffAlarm",
                "" + settingsPrefs.getBoolean("turnOffAlarm", false));
        if (userId == null
                || settingsPrefs.getBoolean("turnOffAlarm", false)) {
            stopService(intent);
            return;
        }
      }
    }

当用户重新启动手机时,会出现以下错误消息。

java.lang.NullPointerException
at xyz.android.InviteService.onHandleIntent(InviteService.java:134)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.os.HandlerThread.run(HandlerThread.java:60)

我得到空指针异常的行是记录turnOffAlarm的行。所以这就是发生的事情。由于某种原因,userId获取的值为null,而不是。此值已存储在首选项文件中,并且在手机重新启动之前不会出现问题。

我无法在模拟器上重现此错误,有什么建议吗?

0 个答案:

没有答案