Hallo, ich möchte einen Hintergrunddienst machen, um die Daten meiner App zu aktualisieren und es einmal am Tag zu wiederholen, auch möchte ich, dass der Dienst onboot startet. Ich habe den folgenden Code:Hintergrundwiederholungsaufgabe mit onboot
public class OnBoot extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Create Intent
context.startService(new Intent(context, BackgroundServiceHandler.class));
}
}
ich ein Einstellungsmenü haben, damit der Benutzer die Stunde der wiederkehrenden Alarm wählen. Wie kann ich die Zeit des Alarmmanagers zurücksetzen? Wo muss ich den Code des Alarmmanagers setzen? Muss ich den Service oder Intentservice nutzen? Wie überprüft man, ob der Dienst läuft?
Alarm Manager Code:
Intent intent = new Intent(MainActivity.this, AlarmService.class);
intent.putExtra("i", 3);
PendingIntent pi = PendingIntent.getService(MainActivity.this, 9, intent, 0);
// every day at 9 am
Calendar calendar = Calendar.getInstance();
// if it's after or equal 9 am schedule for next day
if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) >= 9) {
calendar.add(Calendar.DAY_OF_YEAR, 1); // add, not set!
}
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pi);