【翻译】屏幕关闭AlarmManager不发送广播

    我将AlarmManager设置为定时执行。我的预期是屏幕关闭后继续按定时执行。
    屏幕打开时一切正常,但是当我锁定设备(屏幕的)时,我的BroadcastReceiver 未接收到任何东西。

    我对类似的问题尝试了很多不同的解决方案(在Manifest export:false或process:“:remote”中),
    但问题没有解决。 我需要帮忙 我希望有人能解决这个问题。

    For set alarm manager

    1. AlarmManager alarmManager = (AlarmManager)
    2. context.getSystemService(Context.ALARM_SERVICE);
    3. Intent intent = new Intent(context, TimeService.class);
    4. intent.setAction(SETUP_TIMER_FOR_NOTIFICATION);
    5. PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 112, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    6. long now = System.currentTimeMillis();
    7. long minute = 1000 * 60;
    8. alarmManager.cancel(pendingIntent);
    9. alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() , minute, pendingIntent);

    My Receiver
    public class TimeService extends WakefulBroadcastReceiver {

    1. @Override
    2. public void onReceive(Context context, Intent intent) {

    Log.i(“TimeService”, “onReceive”);

    Intent timeIntent = new Intent(context, NotificationService.class);
    timeIntent.setAction(SETUP_TIMER_FOR_NOTIFICATION);

    1. startWakefulService(context, timeIntent);

    }}

    Manifest.xml

    1. <intent-filter>
    2. <action android:name="alarm_timer_for_notification" />
    3. </intent-filter>
    4. </receiver>

    为了提高电池续航能力,从Android 6开始引入了Doze模式。
    所以会影响AlarmManager的定时功能。

    从Android 6开始,定时器10分钟才醒来1次。
    在屏幕关闭的情况下,setAndAllowWhileIdle也要10分钟才发送广播,或提醒通知。