2014-11-30 4 views
0

간단한 알람 시계 앱을 만들고 있는데 현재 서비스가 설정 시간과 일치하는지 확인하고 다른 활동을 시작하는 서비스에 문제가 있습니다. 여기에 코드입니다 :scheduleAtFixedRate 내 활동을 시작하면 앱이 다운 됨

@Override 
public int onStartCommand(Intent intent, int flags, int startID){ 
    hourSet = intent.getIntExtra("hourSet", 0); 
    minuteSet = intent.getIntExtra("minuteSet", 0); 
    checkTime(); 
    return START_STICKY; 
} 

private void checkTime(){ 
    timer.scheduleAtFixedRate(new TimerTask() {   
     public void run() { 
      time.setToNow(); 
      currentHour = time.hour; 
      currentMinute = time.minute; 

      if(currentHour == hourSet && currentMinute == minuteSet){ 
       Intent i = new Intent(AlarmService.this, AlarmTime.class); 
       startActivity(i); 
       cancel(); 
      } 

     } 
    }, 0, UPDATE_INTERVAL ); 
} 

내가 서비스를 디버깅 한 모든 것이 if 문까지 괜찮습니다. 현재 시간이 설정된 시간과 일치하면 응용 프로그램이 충돌합니다. 어떻게 해결할 수 있습니까?

+0

스택 추적을 표시 할 수 있습니까? –

+0

스레드 내에서 활동을 시작할 수 있다고 생각하지 않습니다. 귀하의 애플 리케이션은 IllegalStateException과 충돌 것입니다. 배경 스레드 컨트롤 UI 작업을 가질 수 없습니다. – Prateek

+0

@Prateek * 내부 서비스 스레드 (활동 스레드 아님) – Toumash

답변

0

사람들이 catLog를 포함하지 않는 이유는 무엇입니까?
문제는 당신이 할 수없는 서비스 작업에 활동을 시작하려고하지만, 당신이 startActivity 호출하기 전에 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

같은 마법 코드를 추가하는 경우, 그것은 새 작업을 시작하고 모든 것이 잘 :) 작동합니다

+0

감사합니다. 사실 나는 완전히 초보자입니다. 몇 주 전에 학습을 시작했습니다. 어리석은 실수를해서 죄송합니다. ( – Smurfy

+0

죄송합니다, 우리는 당신을 도울 것입니다 :) Logcat은 안드로이드 시스템의 로그 일 뿐이며, 일식 안드로이드 모니터에서 그 결과를 볼 수 있습니다. 내 대답이 도움이 되었다면, 녹색 체크를 클릭하여 동의하십시오 :) – Toumash

+0

나는 그것을 사용 해보았 고 그것이 정확하게해야한다고 말한 것에 매우 놀랐습니다. 나는 그것을 더 자세히 조사 할 것이다. 그래도 고마워, 녹색 체크가 선택되었습니다. :디 – Smurfy