无法引用计时器到cancle scheduleatfixedrate

时间:2015-08-10 23:43:15

标签: java timer

我正在使用java和android studio。当我暂停或销毁应用程序时,我正在尝试关闭我使用scheduleatfixedrate设置的活动。问题是我无法获取代码来解析我用来在onpause和onDestroy方法中设置scheduleatrfixedrate的计时器和tasknew引用。以下是我的代码:

@Override
protected void onResume() {
    super.onResume();

    TimerTask tasknew = new readDevice();
    Timer timer = new Timer();

    timer.scheduleAtFixedRate(tasknew, 1000, 500);
}

// Activity paused
@Override
protected void onPause() {                                                          
    super.onPause();
    tasknew.cancel();
    timer.purge();
}

无法取消定时器,它只是在后台继续运行。

更新

我解决了我更新解决方案的问题,以防其他新手java遇到此问题。我发现我所要做的就是在onResume之外移动创建tasknew和timer的语句,并将cancel和purge移动到onDestroy方法。以下是我的工作代码。

public class DeviceControlActivity extends Activity {
    private TimerTask tasknew = new readDevice();
    private Timer timer = new Timer();
    @Override
    protected void onResume() {
        super.onResume();
        timer.scheduleAtFixedRate(tasknew, 1000, 500);
    }
 @Override
    protected void onDestroy() {
        super.onDestroy();
        tasknew.cancel();
        timer.purge();
        mBluetoothGatt.disconnect();                                                 
        mBluetoothGatt.close();                                                      
    }

1 个答案:

答案 0 :(得分:0)

我想创建一个守护程序Timer 就足够了: new Timer(true)

因此,当程序的其余非守护程序线程结束时,计时器将结束。