J'ai la chance d'utiliser WorkManager d'Android et j'écrirai ce que j'ai recherché dans un mémorandum. Cet article décrit l'utilisation de base de WorkManager. Le contenu est simple pour les débutants.
Selon la page officielle, il y a la description suivante
L'API WorkManager facilite la planification des tâches asynchrones reportables qui doivent être exécutées même si l'application se ferme ou si l'appareil redémarre.
en bref,
Vous pouvez voir que c'est une API. Auparavant, il était implémenté à l'aide de JobScheduler et BroadcastReceiver. Il semble que cela soit devenu plus facile. En tant que fonction détaillée, il semble que vous puissiez ajouter des restrictions sur le réseau et l'état de charge, et spécifier le moment d'exécution. De plus, il semble qu'il soit implémenté de manière appropriée en fonction du niveau d'API, nous pouvons donc l'implémenter sans nous soucier du niveau d'API. C'est une API assez utile.
Cet exemple d'application crée une application qui génère une notification (journal cette fois) 10 secondes après la fermeture de l'application.
J'essaierai ceci. De plus, Kotlin est actuellement le courant dominant pour Android, mais cette fois, je voudrais l'implémenter en Java.
Implémentons-le maintenant.
Le flux est tel qu'une tâche est implémentée dans une classe qui hérite de Worker
, une contrainte est ajoutée à WorkRequest
et une soumission est soumise à WorkManager
.
Cette fois, j'expliquerai dans le flux suivant.
Tout d'abord, importez la bibliothèque WorkManager dans votre projet Android. Ajoutez la dépendance suivante au fichier build.gradle
de votre application.
dependencies {
implementation "androidx.work:work-runtime:2.4.0"
//···(réduction)···
}
Les tâches héritent et implémentent la classe Worker
. Remplacez la méthode doWork ()
.
public class SampleWorker extends Worker { //・ ・ ・(1)
private static String TAG = SampleWorker.class.getName();
public SampleWorker(Context context, WorkerParameters params) {
super(context, params);
}
@Override
public Result doWork() { //・ ・ ・(2)
Log.d(TAG, "Effectuer des tâches d'arrière-plan");
return Result.success(); //・ ・ ・(3)
}
}
Valeur de retour | Aperçu |
---|---|
Result.success() | Lorsque la tâche se termine avec succès |
Result.failure() | Quand une tâche échoue |
Result.retry() | Lorsque vous devez réessayer la tâche plus tard |
Pour exécuter une tâche, utilisez la classe WorkRequest
.
Alors que «Worker» définit une tâche, «WorkRequest» définit comment et quand exécuter la tâche. Il existe ʻOneTimeWorkRequest qui n'exécute la tâche qu'une seule fois et
PeriodicWorkRequest qui l'exécute régulièrement. Cette fois, nous utiliserons ʻOneTimeWorkRequest
qui n'est exécutée qu'une seule fois.
public class SampleActivity extends AppCompatActivity {
//···(réduction)···
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) { //・ ・ ・(1)
if (keyCode == KeyEvent.KEYCODE_BACK) {
//・ ・ ・(2)
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(SampleWorker.class)
.setInitialDelay(10, TimeUnit.SECONDS) //・ ・ ・(3)
.build();
WorkManager.getInstance(getApplicationContext()).enqueue(workRequest);
//・ ・ ・(4)
}
return super.onKeyDown(keyCode, event);
}
WorkRequest
, configurez-le dans le WorkManager
en utilisant la méthode ʻenqueue ()`.Tout d'abord, lancez l'application. Appuyez ensuite sur la touche retour pour revenir à l'écran d'accueil (en arrière-plan) Si le journal est sorti après 10 secondes, il est réussi!
L'échantillon a-t-il fonctionné? Cela peut être difficile à comprendre au début, mais vous vous y habituerez après l'avoir implémenté plusieurs fois. WorkManager peut définir diverses restrictions (charge, état de la connexion réseau, etc.). Vous pouvez également le faire régulièrement. J'aimerais écrire un article à ce sujet dans un proche avenir.
à plus!
Recommended Posts