2013-02-22 2 views
3

В рамках моего исследования разработки приложений для Android я разработал простое приложение SOS, обратившись к светодиодной вспышке. Каждая вещь работает нормально и светодиод мигает с интервалом в 1/2 секунды. Но когда пользователь нажимает кнопку «Назад» в телефоне, приложение перестает работать и через 1/2 секунды появляется сообщение «Crash/Force Close». Я новичок в разработке Android и что не так с моим кодом?Android-приложение Crashing после выхода из него, нажав кнопку «Назад»

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

+1

Для дальнейшего использования отправьте стек, который вы можете найти, выполнив 'adb logcat' в командной строке или используя перспективу Debug в Eclipse. –

ответ

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

+2

@ramesh: u r welcome :) – Deepzz

2

вызова purge(); метод после вызова cancel();. Зачем? При вызове метода отмены таймер просто перестает работать. Но он не закрылся. Мы должны закрыть его вручную, прежде чем приложение закроется, как вызов db.close(); в sqlite. Попробуй это. Я думаю, что это только для Таймера. Я не знаю о TimerTask.

mTimer.cancel(); 
mTimer.purge(); 
Смежные вопросы