私はカスタム/マニュアル時間でAlarmManagerによってトリガーされるサービスを作成しました。私が設定した場合、AlarmManagerは02.15 PMで実行されます。時には02.10またはその時刻より前に実行されることもあります。誰でも私を助けることができます。Android:AlarmManager premature trigger(Min API 14)
、これは時間を設定するための私のコードです:
Calendar now = Calendar.getInstance();
int minute = TimerFormatHelper.getMinute();
now.set(Calendar.HOUR, now.get(Calendar.HOUR));
now.set(Calendar.MINUTE, minute);
now.set(Calendar.SECOND, 0);
return now.getTimeInMillis();
//it will return timestamp for time that set
と、このアラームを設定するコード:ドキュメントを1としてalarManager.set()
の代わりに
AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
long startTime = HereTimestampThatGenerateBefore;
Intent intentApp = new Intent(getApplicationContext(), TheServiceHere.class);
PendingIntent pendingIntentApp = PendingIntent
.getService(getApplicationContext(), 0, intentApp, PendingIntent.FLAG_ONE_SHOT);
alarmManager.set(AlarmManager.RTC, startTime,
pendingIntentApp);
SetExact()を使用すると、バッテリの使用を最小限に抑えることができます。 –
min APIは19、私のアプリケーションmin APIは14 – muhwid
なのでsetExactは使えません。残念ながら、setExact()はapi 19+でのみ使用できますので、14から18まではset()を使って不正確になります。私は私の答えを編集します。 – CoderP