Es ist spät! Versuchen Sie, Android Work Manager in Java zu implementieren (Anfänger)

Einführung

Ich habe die Möglichkeit, den WorkManager von Android zu verwenden, und werde das, was ich recherchiert habe, als Memorandum aufschreiben. Dieser Artikel beschreibt die grundlegende Verwendung von WorkManager. Der Inhalt ist für Anfänger einfach.

Was ist WorkManager?

Laut der offiziellen Seite gibt es die folgende Beschreibung

Mit der WorkManager-API können Sie auf einfache Weise verzögerte asynchrone Aufgaben planen, die ausgeführt werden müssen, selbst wenn die App beendet oder das Gerät neu gestartet wird.

Zusamenfassend,

Sie können sehen, dass es sich um eine API handelt. Zuvor wurde es mit JobScheduler und BroadcastReceiver implementiert. Es scheint, dass dies einfacher geworden ist. Als detaillierte Funktion können Sie anscheinend Einschränkungen für den Netzwerk- und Ladestatus hinzufügen und den Ausführungszeitpunkt festlegen. Es scheint auch, dass es abhängig von der API-Ebene in geeigneter Weise implementiert wird, sodass wir es implementieren können, ohne uns um die API-Ebene kümmern zu müssen. Dies ist eine ziemlich nützliche API.

Was diesmal zu machen ist (Beispielanwendung)

Diese Beispiel-App erstellt eine App, die 10 Sekunden nach dem Schließen der App eine Benachrichtigung ausgibt (diesmal protokollieren).

Ich werde es versuchen. Außerdem ist Kotlin derzeit der Mainstream für Android, aber dieses Mal möchte ich es in Java implementieren.

Implementierung

Lassen Sie es uns jetzt implementieren. Der Ablauf ist so, dass eine Aufgabe in einer Klasse implementiert wird, die "Worker" erbt, eine Einschränkung zu "WorkRequest" hinzugefügt wird und eine Übermittlung an "WorkManager" gesendet wird.

Dieses Mal werde ich im folgenden Ablauf erklären.

  1. Bibliothek hinzufügen
  2. Erstellen Sie eine Aufgabe, die im Hintergrund ausgeführt wird
  3. Führen Sie die Aufgabe aus

Bibliothek hinzufügen

Importieren Sie zunächst die WorkManager-Bibliothek in Ihr Android-Projekt. Fügen Sie der Datei "build.gradle" Ihrer App die folgende Abhängigkeit hinzu.

dependencies {
    implementation "androidx.work:work-runtime:2.4.0"
    //···(Kürzung)···
}

Erstellen Sie eine Aufgabe, die im Hintergrund ausgeführt wird

Aufgaben erben und implementieren die Worker-Klasse. Überschreiben Sie die Methode "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, "Hintergrundaufgaben ausführen");
        return Result.success();              //・ ・ ・(3)
    }
}
  1. Erben Sie die Worker-Klasse und erstellen Sie eine Aufgabe.
  2. Überschreiben Sie die doWork-Methode. Beschreiben Sie den Prozess, der bei dieser Methode im Hintergrund ausgeführt werden soll.
  3. Die doWork-Methode hat einen Rückgabewert. Dieses Mal werden wir das normale Ende zurückgeben.
Rückgabewert Überblick
Result.success() Wenn die Aufgabe erfolgreich abgeschlossen wurde
Result.failure() Wenn eine Aufgabe fehlschlägt
Result.retry() Wenn Sie die Aufgabe später wiederholen müssen

Eine Aufgabe erledigen

Verwenden Sie zum Ausführen einer Aufgabe die Klasse "WorkRequest". Während "Worker" eine Aufgabe definiert, definiert "WorkRequest", wie und wann die Aufgabe ausgeführt werden soll. Es gibt eine OneTimeWorkRequest, die die Aufgabe nur einmal ausführt, und einePeriodicWorkRequest, die sie regelmäßig ausführt. Dieses Mal verwenden wir "OneTimeWorkRequest", das nur einmal ausgeführt wird.


public class SampleActivity extends AppCompatActivity {

    //···(Kürzung)···

    @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. Dieses Beispiel wird ausgeführt, wenn die App mit der Zurück-Taste geschlossen wird, sodass Sie sehen können, dass sie im Hintergrund ausgeführt wird.
  2. Generieren Sie eine OneTimeWorkRequest, die nur einmal ausgeführt wird.
  3. Fügen Sie eine Einschränkung hinzu, die nach 10 Sekunden ausgeführt werden soll.
  4. Nachdem Sie die WorkRequest definiert haben, legen Sie sie mit der Methode enqueue () im WorkManager fest.

Funktionsprüfung

Starten Sie zuerst die App. Drücken Sie dann die Zurück-Taste, um zum Startbildschirm (zum Hintergrund) zurückzukehren. Wenn das Protokoll nach 10 Sekunden ausgegeben wird, ist es erfolgreich!

Zusammenfassung

Hat die Probe funktioniert? Es mag zunächst schwer zu verstehen sein, aber Sie werden sich daran gewöhnen, nachdem Sie es mehrmals implementiert haben. WorkManager kann verschiedene Einschränkungen festlegen (Aufladen, Netzwerkverbindungsstatus usw.). Sie können dies auch regelmäßig tun. Ich möchte in naher Zukunft einen Artikel darüber schreiben.

wir sehen uns!

Recommended Posts

Es ist spät! Versuchen Sie, Android Work Manager in Java zu implementieren (Anfänger)
Es ist spät! Versuchen Sie, Android Notification in Java (Anfänger) zu implementieren.
Versuchen Sie, Android Hilt in Java zu implementieren
Schwierigkeiten bei der Implementierung von Alarm Manager in Android Studio
Versuchen Sie, Yuma in Kinx zu implementieren
Versuchen Sie es mit RocksDB mit Java
Lassen Sie uns die Signaturüberprüfung des Codes für elliptische Kurven in Java implementieren
Versuchen Sie, JavaScript in Java aufzurufen
Lassen Sie uns Spresense mit Java entwickeln (1)
Probieren Sie den Funktionstyp in Java aus! ①
Löse den AtCoder-Anfängerwettbewerb 151 mit Java
Löse den AtCoder Beginner Contest 150 mit Java
Versuchen Sie, die asynchrone Verarbeitung in Azure zu implementieren
Löse den AtCoder-Anfängerwettbewerb 153 mit Java
Versuchen Sie, Selenuim 3.141.59 mit Eclipse (Java) auszuführen.
Versuchen Sie einen If-Ausdruck in Java
Löse den AtCoder-Anfängerwettbewerb 175 mit Java
Löse den AtCoder-Anfängerwettbewerb 160 mit Java
Versuchen Sie, AWS X-Ray in Java auszuführen
Versuchen Sie, Yuma in Java zu implementieren
Löse den AtCoder-Anfängerwettbewerb 152 mit Java
Löse den AtCoder-Anfängerwettbewerb 156 mit Java
Funktionsweise von Arrays in Java (Abbildung)
Java: Versuchen Sie, einen durch Kommas getrennten Formatierer selbst zu implementieren
Versuchen Sie, Project Euler in Java zu lösen
Versuchen Sie, n-ary Addition in Java zu implementieren
Versuchen Sie es mit der Stream-API in Java
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie, den CORBA-Dienst unter Java 11+ aufzurufen
Lassen Sie uns eine Taschenrechner-App mit Java erstellen
Führen Sie TensorFlow in Java aus. Es ist jedoch einfach. .. .. ..
Von Java nach C und von C nach Java in Android Studio