我应该在onDestroy()中调用thread.join吗?

时间:2017-01-29 21:42:06

标签: android multithreading

在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()会发生什么? 在活动被销毁之后,系统对线程做了什么?它会等待它们,将它们放在后台还是杀死它们?

1 个答案:

答案 0 :(得分:1)

不,不要。 Thread.join()不会破坏Thread-它等待它完成。这可能需要很长时间(或永远)。它应该只被调用,如果这样做不会使应用程序无响应(如果它不在UI线程上),如果你绝对不能继续没有该线程完成。这里都不是真的。