在onDestroy中调用Thread.join
是否合适?或者只是告诉线程停止并离开它?
例如:
public class MyActivity extends Activity {
private Thread myThread;
private volatile boolean running = true;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myThread = new Thread(new Runnable() {
public void run() {
while(running) {
// Do something
}
}
});
myThread.start();
}
public void onDestroy() {
super.onDestroy();
running = false;
try {
myThread.join(); // Is it good to calling it here? Or just let it fininsh itself?
} catch(InterruptedException e){}
}
}
我知道调用join()
可能会阻止UI线程,但是如果活动在线程结束之前没有调用join()
会发生什么?
在活动被销毁之后,系统对线程做了什么?它会等待它们,将它们放在后台还是杀死它们?
答案 0 :(得分:1)
不,不要。 Thread.join()不会破坏Thread-它等待它完成。这可能需要很长时间(或永远)。它应该只被调用,如果这样做不会使应用程序无响应(如果它不在UI线程上),如果你绝对不能继续没有该线程完成。这里都不是真的。