간단한 알람 시계 앱을 만들고 있는데 현재 서비스가 설정 시간과 일치하는지 확인하고 다른 활동을 시작하는 서비스에 문제가 있습니다. 여기에 코드입니다 :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
문까지 괜찮습니다. 현재 시간이 설정된 시간과 일치하면 응용 프로그램이 충돌합니다. 어떻게 해결할 수 있습니까?
스택 추적을 표시 할 수 있습니까? –
스레드 내에서 활동을 시작할 수 있다고 생각하지 않습니다. 귀하의 애플 리케이션은 IllegalStateException과 충돌 것입니다. 배경 스레드 컨트롤 UI 작업을 가질 수 없습니다. – Prateek
@Prateek * 내부 서비스 스레드 (활동 스레드 아님) – Toumash