Ich habe diese zwei Methoden zum Erstellen und Anhalten eines Threads. Der Thread wird jedoch weiterhin ausgeführt, auch nachdem die erste Methode aufgerufen wurde. (Ich erstelle ein Objekt der Klasse und rufe sie von einer anderen Klasse an).Kann Thread nicht stoppen
private Thread thread;
public void stopAlarm() {
Log.i(LOG_TAG, "stopAlarm called");
sendAlarm = false;
if (!thread.equals(null)) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void triggerAlarm() {
Runnable alarmTest = new Runnable() {
@Override
public void run() {
while (sendAlarm) {
Log.i(LOG_TAG, String.valueOf(sendAlarm));
}
}
};
thread = new Thread(Test);
thread.start();
}
stopAlarm Wenn der Thread bezeichnet wird, ist immer null, auch wenn es aufgerufen wird, nachdem triggerAlarm aufgerufen wird (Faden läuft).
make 'sendAlarm'' volatile' –
Zuerst schreibst du nie etwas wie thread.equals (null), denn wenn es gleich ist, bekommst du eine Ausnahme stattdessen thread == null second kannst du bitte mehr posten von Ihrem Code, um Ihr Problem besser zu verstehen – urag
hat nicht geholfen, es ist immer noch wahr, auch nach dem Aufruf von stopAlarm() – user3742929