Ich habe eine AsyncTask, die derzeit nur einmal ausgeführt wird und etwa zwischen 5 und 30 Sekunden dauert.In regelmäßigen Abständen AsyncTask ausführen, nachdem vorherige Aufgabe beendet wurde
Was ich tun möchte, ist:
1. Starten Sie die App
2. Führen Sie den Task-
3. Warten Sie, es zu beenden.
4. Warten Sie eine bestimmte Zeit, z. 5 Sekunden
5. Wiederholen Sie Schritt 2.
Ich sah mich um mehrere Beiträge vorschlagen, die Handlers
verwenden und das ist, wie ich habe versucht, es zu tun:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Activity activity = this;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Start AsyncTask
new MyTask(activity).execute();
}
}, 5000); //Every 5 seconds
}
MyTask
ist eine Unterklasse von AsyncTask in einige andere .java-Datei.
Die Task wird nur einmal beim Start nach einer Verzögerung von 5 Sekunden ausgeführt. Es führt sich nicht wieder so aus, wie es sollte.
Beachten Sie, dass ich die nächste Aufgabe nur ausführen möchte, wenn sie nicht bereits ausgeführt wird, und führe sie 5 Sekunden danach aus.
Also, warum funktioniert es nicht als Ausnahme?
hallo CPX brauchen, ja, eine Lösung für das heißt runnable und Handler verwenden, aber dies nicht tun, Verwenden Sie stattdessen ScheduledThreadPoolExecutor, es ist sicher und wurde im Hinblick auf eine gute Leistung für Android entwickelt. https://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html –