1

毎朝 5 時に更新サービスを実行する必要があるため、ユーザーが朝に携帯電話を手に取ったときにデータが更新されます。私がこれまでに持っているコードは -

Log.d(TAG, "setAutoRun");
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, RefreshIntentService.class);
PendingIntent pendingI = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar time = Calendar.getInstance();

time.setTimeInMillis(System.currentTimeMillis());

time.add(Calendar.SECOND, 60); // this was just to test out the alarm service
alarmMgr.set(AlarmManager.RTC, time.getTimeInMillis(), pendingI);

これを毎朝 5 時に実行するように変更するにはどうすればよいですか? X 分後に再び実行されるように間隔を設定できることはわかっていますが、ユーザーがそれを開かない場合、どうすれば午前 5 時に開始できますか。

ありがとうございました

4

2 に答える 2

4

このように編集するCalendar paramsとうまくいくはずで、setRepeating()

Calendar time = Calendar.getInstance();
time.set(Calendar.HOUR_OF_DAY, 5);   

alarmMgr.setRepeating(AlarmManager.RTC, time.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingI);

AlarmManager.INTERVAL_DAY

于 2013-04-03T19:47:12.430 に答える
0

特定の時間を渡すことができる setRepeating メソッドを使用できます。この例を見てください:

private void scheduleAlarms() {
        Intent intent = new Intent(mContext, AlarmActivity.class);
        mPendMorInt = PendingIntent.getActivity(
                mContext, Constants.ALARM_MORNING_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        mPendAftInt = PendingIntent.getActivity(
                mContext, Constants.ALARM_AFTERNOON_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT);

        List<Long> alarms = SelectorAlarm.timeAlarms(mContext);
        if (alarms.size() >= 1) {
            mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
            mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, getRightTimeAlarm(alarms.get(Constants.MORNING)),
                    AlarmManager.INTERVAL_DAY, mPendMorInt);
            mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, getRightTimeAlarm(alarms.get(Constants.AFTERNOON)),
                    AlarmManager.INTERVAL_DAY, mPendAftInt);
        }
    }
于 2013-04-03T19:52:55.897 に答える