1

私のアプリでは、起動時にフォアグラウンド サービスを開始するアラームを設定しました。私はこのようにします:

public class Stage2Alarm extends WakefulBroadcastReceiver {

private AlarmManager alarmMgr;
private PendingIntent alarmIntent;

@Override
public void onReceive(Context context, Intent intent) {
    if (!MyPrefs.isActivity1Visible()) {
        MyPrefs.setStageOneCompleted(true, context);
        StageNotification.sendNotification(context);
        context.startService(new Intent(context, MyService.class));
    }
}

public void setAlarm(Context context) {
    alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, Stage2Alarm.class);
    alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
    alarmMgr.set(AlarmManager.RTC_WAKEUP, MyPrefs.getWakeUp(), alarmIntent);
}

}

問題は、サービスがまったく開始されず、通知のみが送信されることです。何が問題なのですか?

編集:サービスが開始されるはずのときに、LogCat で NullPointerException も取得します

編集 2: サービスの重要な部分は次のとおりです。

@Override
public void onCreate() {
    super.onCreate();
    db = new DataHelper(this);
    broadcaster = LocalBroadcastManager.getInstance(this);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.v("Service", intent.toString());
    initialize();
    return START_REDELIVER_INTENT;
}
4

1 に答える 1