如何正确关闭所有线程的活动?

时间:2013-11-11 13:30:34

标签: android android-asynctask android-activity

如何使用所有线缆正确关闭活动?

我有一个使用多个同步和异步线程的活动,最后以“finish()”结束。但仍然开放,因为一些听众(例如电话)正在倾听。

一个简单的例子是以下代码:

...
test=new Timer();
    test.schedule(new TimerTask(){
    // @Override
    public void run(){
    countTime++;
    System.out.println("time es -> " + countTime);
    }
},1,1000);
...

我制作了一个 MainScreen.this.finish()并且没有直观显示,但是仪表仍在运行。

我怎样才能结束这项活动?

2 个答案:

答案 0 :(得分:0)

cancel()活动的Timer上致电onDestroy()。或者,尽早致电cancel() Timer(例如onPause())。您对Timer的使用需要智能地与活动生命周期联系起来。

答案 1 :(得分:0)

您必须使用mThread.join()在活动的onStop()(或onPause())方法中停止该线程。 这看起来像这样:

Thread mThread;
boolean isRunning;

@Override
public void onStop(){
    isRunning = false;
    try {
        mThread.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

如果要停止很多线程,可以将它们存储在某种列表中并遍历此列表并加入()每个线程。