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.
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.
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.
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.
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)···
}
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)
}
}
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 |
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);
}
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!
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