Zunächst einmal konnte ich nicht einmal die Methode zu verwenden, ich lese seit Stunden jetzt und jemand sagt, verwenden Sie "Handler", jemand sagt, verwenden Sie "Timer". Hier ist, was ich versuche zu erreichen:Android - Führen Sie einen Thread wiederholt innerhalb eines Timers
Bei Voreinstellungen, gibt es eine Einstellung (Kontrollkästchen), um den wiederholenden Job zu aktivieren/deaktivieren. Wenn diese Checkbox aktiviert ist, sollte der Timer anfangen zu arbeiten und der Thread sollte alle x Sekunden ausgeführt werden. Wenn das Kontrollkästchen deaktiviert ist, sollte der Timer gestoppt werden.
Hier ist mein Code:
prüfen, ob, wenn Kontrollkästchen aktiviert ist oder nicht, wenn geprüft ‚refreshAllServers‘ Leere ausgeführt wird, die den Job mit Timer tut.
boolean CheckboxPreference = prefs.getBoolean("checkboxPref", true);
if(CheckboxPreference == true) {
Main main = new Main();
main.refreshAllServers("start");
} else {
Main main = new Main();
main.refreshAllServers("stop");
}
Der refreshAllServers Leere, die den Timer Job macht:
public void refreshAllServers(String start) {
if(start == "start") {
// Start the timer which will repeatingly execute the thread
} else {
// stop the timer
}
Und hier ist, wie ich meinen Thread ausführen: (Funktioniert gut ohne Timer)
Thread myThread = new MyThread(-5);
myThread.start();
Was habe ich versucht?
Ich versuchte jedes Beispiel, das ich von Google sehen konnte (Handler, Timer) keiner von ihnen arbeitete, ich schaffte es, den Timer einmal zu starten, aber es zu stoppen hat nicht funktioniert. Der simpliest & verständlich Code, den ich in meiner Forschung sah, war dies:
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
// your code here
}
},
5000
);
Prüfen Sie, ob die Antwort [hier] (http://stackoverflow.com/questions/8098806/where-do-i-create-and-use-scheduledthreadpoolexecutor-timertask-or-handler/8102488#8102488) hilft. – yorkw