Il est tard! Essayez d'implémenter Android Work Manager en Java (débutant)

introduction

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.

Qu'est-ce que WorkManager

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.

Que faire cette fois (exemple d'application)

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.

la mise en oeuvre

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.

  1. Ajouter une bibliothèque
  2. Créez une tâche qui s'exécute en arrière-plan
  3. Exécutez la tâche

Ajouter une bibliothèque

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)···
}

Créer une tâche qui s'exécute en arrière-plan

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)
    }
}
  1. Héritez de la classe Worker et créez une tâche.
  2. Remplacez la méthode doWork. Décrivez le processus à exécuter en arrière-plan dans cette méthode.
  3. La méthode doWork a une valeur de retour. Cette fois, nous reviendrons à la fin normale.
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

Exécuter une tâche

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);
    }
  1. Cet exemple s'exécute lorsque l'application est fermée avec la touche retour afin que vous puissiez voir qu'elle s'exécute en arrière-plan.
  2. Générez une ʻOneTimeWorkRequest` qui ne s'exécute qu'une seule fois.
  3. Ajoutez une contrainte à exécuter après 10 secondes.
  4. Après avoir défini le WorkRequest, configurez-le dans le WorkManager en utilisant la méthode ʻenqueue ()`.

Contrôle de fonctionnement

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!

Résumé

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

Il est tard! Essayez d'implémenter Android Work Manager en Java (débutant)
Il est tard! Essayez d'implémenter la notification Android en Java (débutant)
Essayez d'implémenter Android Hilt en Java
Difficultés lors de la mise en œuvre d'Alarm Manager dans Android Studio
Essayez d'implémenter Yuma dans Kinx
Essayez d'utiliser RocksDB avec Java
Implémentons la vérification de signature du code de courbe elliptique en Java
Essayez d'appeler JavaScript en Java
Essayez de développer Spresense avec Java (1)
Essayez le type fonctionnel en Java! ①
Résolvez AtCoder Beginner Contest 151 avec Java
Résolvez AtCoder Beginner Contest 150 avec Java
Essayez d'implémenter le traitement asynchrone dans Azure
Résolvez AtCoder Beginner Contest 153 avec Java
Essayez d'exécuter Selenuim 3.141.59 avec eclipse (java)
Essayez une expression If en Java
Résolvez AtCoder Beginner Contest 175 avec Java
Résolvez AtCoder Beginner Contest 160 avec Java
Essayez d'exécuter AWS X-Ray en Java
Essayez d'implémenter Yuma en Java
Résolvez AtCoder Beginner Contest 152 avec Java
Résolvez AtCoder Beginner Contest 156 avec Java
Fonctionnement des tableaux en Java (illustration)
Java: essayez d'implémenter vous-même un formateur séparé par des virgules
Essayez de résoudre Project Euler en Java
Essayez d'implémenter l'ajout n-aire en Java
Essayez d'utiliser l'API Stream en Java
Essayez d'utiliser l'API au format JSON en Java
Essayez d'appeler le service CORBA sur Java 11+
Créons une application de calcul avec Java
Faites TensorFlow en Java. C'est facile, cependant. .. .. ..
De Java à C et de C à Java dans Android Studio