2017-09-04 2 views
1

안드로이드에서주기적인 백그라운드 타이머를 실행하려고합니다.안드로이드 백그라운드 서비스 (API 21 이전)

는 서비스에서 실행 및 minSdk와 함께 작동있어 다음 코드 =

@Override 
public int onStartCommand(Intent i, int flags, int startId) { 
    Intent intent = new Intent(this, TestReceiver.class); 
    PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

    AlarmManager manager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
    manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+1000, 60000, alarmIntent); 
    return START_STICKY; 
} 

(21) 그리고 난 분 SDK < (21)와 같은를하려고하면

@Override 
public void onReceive(Context arg0, Intent arg1) { 
    Log.i("TAG", "Tick: "+System.currentTimeMillis()+ " "+new Date()); 
} 

는 그러나 타이머가 될 때까지 작동하는 수신기 나는 화면을 끈다.

팁이 있습니까?

답변

0

내가 API에 대한 setExact를 사용하는 것이 좋습니다 것> (19)와 새로운 버전의 방법은 이러한 기능을 제공하지 않는 반복 setAndAllowWhileIdle

에 대한

set.

는 내가 나이가 코드에서 수행 onCreate의 내부 startCommand를 호출하는 것입니다 본 적이 WakefullBroadcastReceiver

0

방법 중 하나를 사용하는 것을 잊지 마십시오. 두 가지 방법 모두 onStartCommand을 호출하지만이 방법을 사용하면이 방법이 "끈적"하게 보였다. 나는 여분의 전화에 관한 질문을 몇 달 전에 제기했고 this answer을 얻었다. 나는 이것이 당신의 특정한 문제를 해결할 것이라고 말할 수는 없지만, 시도해 볼만한 가치가있을 것입니다.

관련 문제