Скорее всего, он не бодрствует достаточно долго. Используете ли вы WakeLock для предотвращения возврата Android в спящий режим?
Итак, во-первых, вам нужно добавить это в свой манифест:
<uses-permission android:name="android.permission.WAKE_LOCK" />
и затем в вашем приемнике // псевдокод, за исключением частей, которые имеют значение ...
public WakeLock wl;
@Override
public void onReceive(c,i){
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);//this matters
wl.getWakeLock().acquire(); //as does this
//do whatever but DON'T do it here... call a Service like this...
Intent i = new Intent(context, MyExcellentService.class);
try {
PendingIntent.getService(context, 0,i, 0).send();
}catch(Exception e){}
//hold on to wl in some way and release it in the service, not here,
wl.getWakeLock().release();
}
Если вы собираетесь использовать службу, вам необходимо зарегистрировать ее в своем манифесте, например, так ...
<service android:name="MyExcellentService" />
И я бы расширил Приложение и держал там WakeLock, чтобы вам не приходилось передавать его более замысловатыми способами. Вы можете просто войти в Приложение и поговорить прямо с ним!
Вы захотите посмотреть различия в * видах пробуждений. PARTIAL_WAKE_LOCK не будет держать экран активным, например, только фоновую обработку.
Дайте мне знать, если это работает, я режу и вставляю из разных мест, поэтому я могу что-то упустить.