我有一个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