Я внедрил диспетчер аварийных сигналов, чтобы периодически пробуждать фоновые службы каждые 15 минут. Он работает нормально, но с момента включения режима DOZE Android 6.0 он ведет себя странно и не просыпается каждые 15 минут. Хотя я использую метод alarm.setExactAndAllowWhileIdle(), но все еще не работаю в состоянии ожидания.
вот мой метод реализации Alarm Manager
private void serviceRunningBackground()
{
final Intent restartIntent = new Intent(this, service.class);
restartIntent.putExtra("ALARM_RESTART_SERVICE_DIED", true);
alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Handler restartServiceHandler;
restartServiceHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
pintent = PendingIntent.getService(getApplicationContext(), 0, restartIntent, 0);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
Log.d(TAG, " Marshmellow "+ TIMER_START_TIME);
alarmMgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 900000, pintent);
} else {
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 900000, pintent);
}
sendEmptyMessageDelayed(0, TIMER_START_TIME);
}
};
restartServiceHandler.sendEmptyMessageDelayed(0, 0);
}
Любая помощь будет оценена .. спасибо
System.currentTimeMillis()+900000
, и он сработает через 15 минут. Вам нужно будет снова написать такой код внутри вашего исходного методаservice.java
, чтобы он установил будильник на следующие 15 минут. - person Mehul Joisar   schedule 30.10.2015setRepeating
больше не срабатывает будильник в точное время, начиная с API 19 или выше. раздел примечаний к оформлению заказа в этомhttp://developer.android.com/reference/android/app/AlarmManager.html#setRepeating(int, long, long, android.app.PendingIntent)
- person Mehul Joisar   schedule 30.10.2015