2013-02-22 177 views
3

作爲我的Android應用程序開發研究的一部分,我通過訪問LED閃光燈開發了一個簡單的SOS應用程序。每個工作都很好,LED以1/2秒的間隔閃爍。但是當用戶按下電話中的後退按鈕時,應用程序將退出,1/2秒後將出現「崩潰/強制關閉」消息。我是android開發noob和我的代碼最新怎麼了?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; 
      } 


     } 
    }; 
+2

stacktrace !!!!!! – smk 2013-02-22 03:55:09

+1

爲了將來的參考,請通過在命令行中運行'adb logcat'或在Eclipse中使用Debug透視圖來發布stacktrace。 – 2013-02-22 04:38:07

回答

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); 
    } 
+0

謝謝..解決:) :)非常感謝 – ramesh 2013-02-22 04:22:10

+2

@ramesh:你歡迎:) – Deepzz 2013-02-22 04:23:17

2

呼叫purge();方法。爲什麼?當調用取消方法時,定時器停止工作。但它並沒有結束。我們必須在應用程序關閉之前手動關閉它,例如在sqlite中調用db.close();。嘗試這個。我認爲這隻適用於Timer。我不知道TimerTask。

mTimer.cancel(); 
mTimer.purge(); 
相關問題