web-dev-qa-db-fra.com

Android - Firebase jobdispatcher

Je voudrais savoir s’il est possible d’utiliser Firebase jobdispatcher pour planifier un hit d’URL et obtenir la réponse afin de mettre à jour la base de données. Je voudrais qu'il fonctionne une fois par jour la nuit. Est-ce que quelqu'un sait si c'est possible? 

Je ne trouve pas de bon exemple pour ce faire. J'ai déjà lu la documentation Android et https://github.com/firebase/firebase-jobdispatcher-Android#user-content-firebase-jobdispatcher- .

Je dois utiliser Firebase jobdispatcher car je cible l’API 16. 

Merci d'avance.

METTRE À JOUR 

C'est ce que j'ai fait pour le programmer une fois par jour. 

final int periodicity = (int) TimeUnit.HOURS.toSeconds(24);
final int toleranceInterval = (int) TimeUnit.HOURS.toSeconds(1);

FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this));
Job job = dispatcher.newJobBuilder()
        .setService(UpdateTVJobService.class)
        .setTag(JOB_TAG)
        .setTrigger(Trigger.executionWindow(periodicity, periodicity + toleranceInterval))
        .setLifetime(Lifetime.FOREVER)
        .setRecurring(true)
        .setReplaceCurrent(true)
        .build();

int result = dispatcher.schedule(job);

if (result != FirebaseJobDispatcher.SCHEDULE_RESULT_SUCCESS) {
    Log.d("JOB_TAG", "ERROR ON SCHEDULE");
}
13
Sol

Vous pouvez planifier des tâches récurrentes à l'aide de Firebase JobDispatcher.Selon vos besoins, vous devez créer un service permettant d'étendre JobService afin d'obtenir une réponse à partir de l'URL et de mettre à jour la base de données. Ensuite, vous pouvez planifier ce service à l’aide de Firebase JobDispatcher .Dans exécutionWindow, vous devez spécifier la première et la dernière heure auxquelles le travail doit être exécuté dans des circonstances idéales.

Si vous souhaitez planifier un travail toutes les 24 heures, vous pouvez utiliser la fenêtre d'exécution (60 * 60 * 24,60 * 60 * 24 + 60) .Ensuite, si vous souhaitez qu'il soit exécuté toutes les nuits, assurez-vous qu'il initialement programmé la nuit.Pour que vous puissiez utiliser initialement AlarmManager pour être déclenché la nuit (une seule fois) lorsque l'application est installée et pour planifier un travail récurrent à l'aide du répartiteur de travaux OR, utilisez un autre moyen: temps d'exécution, vous pouvez planifier un travail non récursif à l'aide de jobdispatcher qui s'exécutera la nuit. À l'intérieur de ce service de maintenance, vous pouvez planifier un travail récurrent à l'aide du répartiteur de travaux.

ExecutionWindow spécifie l'heure approximative. Ce n'est pas garanti que cela fonctionnerait à la fenêtre donnée. S'il manque la fenêtre, le travail sera exécuté le plus tôt possible dans des circonstances idéales.Pour les travaux récurrents une fois le travail terminé, le prochain travail calculera la durée de la fenêtre d'exécution à partir de la dernière exécution du travail.

Job myJob = dispatcher.newJobBuilder()
                    .setTag("my-unique-tag")
                    .setRecurring(true)
                    .setLifetime(Lifetime.FOREVER)
                    .setService(MyJobService.class)
                    .setTrigger(Trigger.executionWindow(60*60*24,60*60*24+60))
                    .setReplaceCurrent(false)
                    .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
                    .setConstraints(Constraint.ON_ANY_NETWORK)
                    .setExtras(myExtrasBundle)
                    .build();

dispatcher.mustSchedule(myJob);
16
Android Developer

Vous pouvez planifier un travail récurrent en indiquant à Job.Builder de créer un travail récurrent avec un Trigger doté d'une fenêtre d'exécution en fonction de vos besoins.

1
Doug Stevenson