2017-09-04 14 views
1

Androidで定期的なバックグラウンドタイマーを実行しようとしています。Android前のバックグラウンドサービス

それがサービスから実行し、= 21

@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; 
} 

と受信機

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

しかし、私は分SDKで同じことをしようとした場合< 21タイマー作品までminSdkと連携しています次のコード私は画面を切る。

任意のチップ?

答えて

0

私は方法は、このような機能を提供していない繰り返し新しいバージョンsetAndAllowWhileIdle

用API> 19とset

ためsetExactを使用することをお勧めします。

は、私はそれが古いコードで行わonCreateの内部startCommandを呼び出すことで見てきたWakefullBroadcastReceiver

0

一つの方法を使用することを忘れないでください。どちらの方法もonStartCommandと呼ばれますが、このようにすると「スティッキー」になりました。私は数ヶ月前に冗長なコールについての質問を提起し、this answerを得ました。私はこれがあなたの特定の問題を解決するとは言いませんが、試してみる価値があります。