0

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

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

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

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

我做了一个MainScreen.this.finish()并没有在视觉上出现,但仪表仍在运行。

我怎样才能结束活动?

4

2 回答 2

0

呼吁cancel()Timer参加onDestroy()活动。或者,比那更早打电话cancel()给你(例如, )。您对您的需求的使用要智能地与活动生命周期联系起来。TimeronPause()Timer

于 2013-11-11T13:35:25.703 回答
0

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

Thread mThread;
boolean isRunning;

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

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

于 2013-11-11T13:44:22.773 回答