Qu'est-ce que vous avez besoin est un un service pour exécuter la logique en arrière-plan et une alarme .
Un peu de théorie première:
https://developer.android.com/training/scheduling/alarms.html#tradeoffs
Une alarme à répétition est un mécanisme relativement simple avec une flexibilité limitée. Ce n'est peut-être pas le meilleur choix pour votre application, en particulier si vous devez déclencher des opérations réseau. Une alarme mal conçue peut entraîner une décharge de la batterie et entraîner une charge importante sur les serveurs. Si vous possédez le serveur hébergeant les données de votre application, l'utilisation de Google Cloud Messaging (GCM) avec conjointement avec l'adaptateur de synchronisation est une meilleure solution que AlarmManager.
https://developer.android.com/training/sync-adapters/running-sync-adapter.html
Par défaut, toutes les alarmes sont annulées lorsqu'un appareil arrête.
Vous devez configurer l'alarme quelque part dans votre application, au début, mais l'enregistrement d'un drapeau parce que vous ne voulez pas mettre en place cette alarme chaque fois que l'utilisateur ouvre l'application
if (!appSettings.isAlarmSetUp()) {
final AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
final Intent i = new Intent(context, CustomService.class);
final Intent intentNotRepeat = new Intent(context, CustomService.class);
final PendingIntent pi = PendingIntent.getService(context, 0, i, 0);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + AlarmManager.INTERVAL_HALF_HOUR, AlarmManager.INTERVAL_DAY, pi);
appSettings.setAlarmSetUp(true);
}
Voici plus d'informations sur les alarmes: https://developer.android.com/training/scheduling/alarms.html#type
Comme vous pouvez le voir, cette alarme se réveille un CustomService, où vous ferez tout votre logique
public class CustomService extends IntentService {
public CustomService(String name) {
super(name);
}
@Override
protected void onHandleIntent(Intent intent) {
// Request to server
client.requestToServer()
.subscribe(response -> {
// Successful response
doSomething(response);
}
},
error -> {
// Error
createAlarmInOneHour();
});
}
}
vous voulez exécuter le code ci-dessus tous les jours ?? –
ouais. C'est pourquoi j'ai écrit "If newDay" -> si c'est un nouveau jour, la requête http devrait être exécutée et ainsi de suite. – jdstaerk
Le gestionnaire d'alarme et le service est tout ce dont vous avez besoin. Il est disponible auprès de l'API 1 – MRX