Mar*_*tin 4 java multithreading android
我在java/Android中有一个这样的线程:
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
update_i();
}
};
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Thread myThread = new Thread(new Runnable() {
public void run() {
while (true) {
try {
handler.sendMessage(handler.obtainMessage());
Thread.sleep(timer);
} catch (Throwable t) {
}
}
}
});
myThread.start();
}
Run Code Online (Sandbox Code Playgroud)
运行我的应用程序时,该线程正常工作.但我想用一个按钮启动/重启线程.
Button.OnClickListener StartButtonOnClickListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
//start/restart the thread
}
};
Run Code Online (Sandbox Code Playgroud)
如果我将线程复制到按钮中,我每次用户点击按钮时都会创建一个新线程.我希望在用户第一次单击按钮时运行该线程,"kill it"并从头开始,如果用户第二次单击该按钮(我不想启动第二个线程).
mkl*_*rha 13
我认为Colin是wright你不能重新启动你需要创建一个新实例,如果仍在运行,中断函数将停止正在运行的线程.
我建议你创建一个内联类,内联实现的instand,它将使它更容易理解.
if(myThread.isAlive()){
myThread.interrupt();
}
myThread = new MyThread();
myThread.start();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
您无法重新启动线程.
从文档:
Throws IllegalThreadStateException
if the Thread has been started before
Run Code Online (Sandbox Code Playgroud)
您可以终止前一个线程,但最后您必须创建线程的第二个实例.
资源: