我有一個andoid(API 21)mainactivity在其中啓動一個線程。 按下按鈕我關閉線程和mainactivity。 這是一個很好的解決方案來中斷線程和關閉活動? 我嘗試調用如何糾正停止android主要活動等待線程?
mythread.cancel()
finishAndRemoveTask();
但當mainactivity /程序關閉它崩潰,因爲線程仍然活着。
所以按鈕被點擊時,我試圖改變代碼,並寫上:
mythread.interrupt();
finishAndRemoveTask();
這是一個很好的解決方案嗎? (我不知道我是否可以使用mythread.join(),因爲線程運行無限..
在OnCreate中創建和啓動線程
myThread_read = new thread_read(handler_read);
//starting thread
myThread_read.start();
我知道我必須使用的Runnable但是這個代碼。繼承Thread類 線程代碼:
private class thread_read extends Thread {
Handler mHandler;
String logString ;
protected volatile boolean running;
/* constructor */
thread_read(Handler h) {
mHandler = h;
}
public void start()
{
Logger.WriteString("thread_read", "Starting");
running = true;
super.start();
}
public void cancel()
{
Logger.WriteString("thread_read", "Stopping");
running = false;
}
public void run() {
while (running) {
try {
Thread.sleep(500); // 500 msecs
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
// do works
}
}
}
}
你的意思是一個可以刪除mythread.interrupt();並在OnDestroy方法中插入 mythread.cancel() @Override public void onDestroy(){ mythread.cancel(); super.onDestroy(); } – Gab74