我的相机应用程序中有 Multi-Shot 功能。我正在使用以下短代码来做到这一点。
if (TIMER_STARTED) {
multishotTimer.cancel();
multishotTimer.purge();
multishotTimer = null;
TIMER_STARTED = false;
} else {
multishotTimer = new Timer();
multishotTimer.schedule(new TimerTask() {
@Override
public void run() {
TIMER_STARTED = true;
Camera camera = surfaceView.getCamera();
camera.takePicture(null, null,
new HandlePictureStorage());
}
}, 1000, 5000L);
}
这里,TIMER_STARTED是布尔标志,指示定时器是否启动。HandlePictureStorage是处理PictureCallback的类。
问题: 当我第一次点击“MultiShot”按钮时,它会启动计时器并每 5 秒拍照一次。要停止计时器,我再单击一次相同的按钮。但是,如果我连续单击按钮,应用程序会挂起并强制停止。然后在我需要关闭我的设备后,由于停止的服务使用了相机并且不能轻易释放它。如何管理启动和停止计时器?