Ich befolge Beispielcode zum Senden einer Update-Benachrichtigung alle 10 Sekunden. Der Code folgt und es ist in einem UpdateService
für einen AppWidgetProvider
. Wenn ich eine Thread.sleep(10*1000);
setze, kann ich das erwartete Verhalten meiner Wartungsschleife sehen. Ich habe offensichtlich etwas grundsätzlich falsches, das sofort ausgelöst wird. Es soll ein PendingIntent
eines Alarms sein, der ein Update an meinen Hörer sendet.Warum wird mein Android-Alarmmanager sofort ausgelöst?
long nextUpdate = 10*1000;
Log.d(TAG, "Requesting next update in " + nextUpdate + " msec.");
Intent updateIntent = new Intent(ACTION_UPDATE_ALL);
updateIntent.setClass(this, UpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, updateIntent, 0);
// Schedule alarm, and force the device awake for this update
AlarmManager alarmManager = (AlarmManager)getBaseContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),
nextUpdate, pendingIntent);
Danke an beide +1 von mir für die schnelle und genaue Antwort. Auf zum nächsten Problem. Ziemlich ironisch versuchte ich, einen zweiten Kommentar zu früh zu geben (<15 Sekunden), also bekomme ich eine Timer-Pop-Benachrichtigung von SO. :)) – mobibob
ich mache es so 'amAlarm1.setInexactRepeating (AlarmManager.RTC_WAKEUP, 120000, AlarmManager.INTERVAL_DAY, alarm1Pending); noch ausstehende Absicht wird sofort ausgelöst ?? ' –
@MuhammadBabar: Sie sollten wirklich eine neue Frage stellen. Aber um Ihre Frage trotzdem zu beantworten, übergeben Sie '120000' an triggerAtTime, was' Fr, 02.01.1970, 09:20:00 GMT' entspricht. – Falmarri