3

作为我的 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;
            }


        }
    };
4

2 回答 2

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);
    }
于 2013-02-22T03:58:28.350 回答
2

调用purge();后调用方法cancel();。为什么?调用取消方法时,计时器停止工作。但它没有关闭。我们必须在应用程序关闭之前手动关闭它,就像db.close();在 sqlite 中调用一样。试试这个。我认为这仅适用于计时器。我不知道 TimerTask。

mTimer.cancel();
mTimer.purge();
于 2013-02-22T04:35:52.793 回答