2011-10-13 3 views
1

고정 요금 타이머를 시작하는 활동이 있습니다. 활동을 다시 열면 타이머가 현재 실행되고 있는지 어떻게 확인합니까?Android : 이미 시작한 타이머 받기

timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() { 
    public void run() 
    { 
     startService(new Intent(getBaseContext(), GetClassInfoService.class)); 
    } 
}, 0, Integer.parseInt(updateTime)*60*1000); 
editor.putString("timerState", "on"); 

내가 공유 환경 설정을 시도하고, 그 앱이 완전히 폐쇄 (사용자 힘이 종료 또는 장치를 다시 시작하는 경우) 완전히 타이머를 해제하는 경우를 제외하고 모든 인스턴스에서 작동합니다. 공유 환경 설정은 "on"상태로 유지됩니다. 단순히 onDestroy에서 변경하는 것은 작동하지 않습니다. 왜냐하면 앱이 닫혀 있더라도 타이머가 계속 나가기를 원하기 때문입니다.

타이머를 확인하는 더 좋은 방법이 있습니까? 아니면 강제 종료 또는 재시작으로 타이머가 꺼지면 알 수있는 방법일까요?

답변

1

startService 메소드에 의해 호출되는 서비스는 서비스에 포함 된 활동에 따라 달라집니다.
bindService 메소드를 사용하지 않는 이유는 무엇입니까?

1

정직하게 말하면, 당신에게 정보에 입각 한 의견을 제시하기 위해 더 많은 코드가 필요 하겠지만, 당신이 제공 한 것에 근거하여 타이머 논리를 서비스로 옮기고 싶다고 말하고 싶습니다. startService로 전화하면 stopService으로 전화 할 때까지 서비스가 계속 실행됩니다. 그런 다음 사용자의 타이머가 서비스를 종료하지 않는 한 타이머가 서비스 내에서 무기한으로 계속 실행될 수 있으므로 중지되는 것에 대해 걱정할 필요가 없습니다.

GetClassInfoService.class에 통신해야하는 항목에 따라 IntentService를 기반으로하는 시스템처럼 사서함을 사용하거나보다 강력한 서비스 바인딩 방법을 사용할 수 있습니다. 둘 다 설명되어 있습니다. here.