繁体   English   中英

计划从警报管理器启动的服务无法启动

[英]Service scheduled to start from Alarm Manager does not start

在我的应用程序中,我设置了一个警报,该警报在触发时将启动前台服务。 我这样做是这样的:

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;
}

尝试这个

am = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime()
                    + Constants.ALARM_MANAGER_INTERVAL, pendingIntent);

代替意图使用PendingIntent

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM