2012-10-05 6 views
0

나는 다음과 같이 활동에 대해 시간을 초과 한 작업을 올바르게 실행하고 있습니다. 그러나 활동 onResume, 예외가 발생하면 "타이머 작업이 이미 예약되어 있습니다". 일단 작업이 실행되면 타이머를 취소합니다. 그것을 해결하는 방법? 당신은 각각의 TimerTask 인스턴스() 한 번 timer.schedule를 호출 할 수 있습니다안드로이드 타이머 예외 onResume

 timer = new Timer(); 
     timer.schedule(task, 5000); 
+0

onDestroy 또는 onPause 메서드가 있습니까? –

+0

예, 활동을 떠나기 전에 실행되는 타이머도 onPause에서 취소됩니다. – Jaume

답변

2

:

final Runnable setButton = new Runnable() { 
     public void run() { 
      myClass.aBridge.button_back.setVisibility(View.INVISIBLE); 
       timer.cancel(); 
     } 
    }; 

    TimerTask task = new TimerTask(){ 
     public void run() { 
      webPush.this.runOnUiThread(setButton); 
     } 
    }; 

    @Override 
    protected void onResume() { 
     super.onResume(); 

      timer = new Timer(); 
      timer.schedule(task, 5000); 

    } 

작업으로 onResume 전에 한 번이라고합니다 감사합니다. 새 인스턴스를 예약하기 전에 만듭니다.

편집 : 코드에 대해 TimerTask 멤버 변수를 정의한 지점에서 초기화하지 마십시오. 대신, onResume()에서 새 인스턴스를 만들고 바로 전에 인스턴스를 만듭니다.

+0

위대한! 일! 정말 고마워. – Jaume

관련 문제