我有這兩種創建和停止線程的方法。然而,即使在第一個方法被調用之後,線程仍然保持運行。 (我創建了一個類的對象,並從另一個類中調用它們)。不能停止線程
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被稱爲線程總是空,雖然triggerAlarm被稱爲(線程運行)後,它被調用。
make'sendAlarm'' volatile' –
首先,你從來沒有寫過類似thread.equals(null)的東西,因爲如果它相等,你會得到一個異常,而不是使用線程== null秒你能否請發佈更多你的代碼讓你的問題更加難以理解 – urag
沒有幫助,它仍然是真的,即使在調用stopAlarm() – user3742929