作为我的Android应用程序开发研究的一部分,我通过访问LED闪光灯开发了一个简单的SOS应用程序。每一件工作都很好,LED以1/2秒的间隔闪烁。但是当用户按下手机中的后退按钮时,应用程序退出并在1/2秒后退出"崩溃/强制关闭"消息来了。我是Android开发的菜鸟,我的代码有什么问题?
private boolean lOn=true;
Timer mTimer = new Timer();
TimerTask mTimerTask = new TimerTask() {
@Override
public void run() {
if(lOn){
final Parameters p = camera.getParameters();
Log.i("info", "torch is turn Off!");
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
lOn=false;
}
else {
final Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
isLighOn = false;
lOn=true;
}
}
};
答案 0 :(得分:4)
可能是因为你没有取消你的计时器..
试试这个
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
if( keyCode == KeyEvent.KEYCODE_BACK )
{
mTimer.cancel();
}
}
return super.onKeyDown(keyCode, event);
}
答案 1 :(得分:2)
致电purge();
后调用cancel();
方法。为什么?调用cancel方法时,计时器停止工作。但它并没有结束。我们必须在应用程序关闭之前手动关闭它,就像在sqlite中调用db.close();
一样。试试这个。我认为这只适用于Timer。我不了解TimerTask。
mTimer.cancel();
mTimer.purge();