我正在使用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();
}
答案 0 :(得分:0)
我想创建一个守护程序Timer 就足够了:
new Timer(true)
因此,当程序的其余非守护程序线程结束时,计时器将结束。