【翻译】屏幕关闭AlarmManager不发送广播
我将AlarmManager设置为定时执行。我的预期是屏幕关闭后继续按定时执行。
屏幕打开时一切正常,但是当我锁定设备(屏幕的)时,我的BroadcastReceiver 未接收到任何东西。
我对类似的问题尝试了很多不同的解决方案(在Manifest export:false或process:“:remote”中),
但问题没有解决。 我需要帮忙 我希望有人能解决这个问题。
For set alarm manager
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);Intent intent = new Intent(context, TimeService.class);intent.setAction(SETUP_TIMER_FOR_NOTIFICATION);PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 112, intent, PendingIntent.FLAG_UPDATE_CURRENT);long now = System.currentTimeMillis();long minute = 1000 * 60;alarmManager.cancel(pendingIntent);alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() , minute, pendingIntent);
My Receiver
public class TimeService extends WakefulBroadcastReceiver {
@Overridepublic void onReceive(Context context, Intent intent) {
Log.i(“TimeService”, “onReceive”);
Intent timeIntent = new Intent(context, NotificationService.class);
timeIntent.setAction(SETUP_TIMER_FOR_NOTIFICATION);
startWakefulService(context, timeIntent);
}}
Manifest.xml
<intent-filter><action android:name="alarm_timer_for_notification" /></intent-filter></receiver>
为了提高电池续航能力,从Android 6开始引入了Doze模式。
所以会影响AlarmManager的定时功能。
从Android 6开始,定时器10分钟才醒来1次。
在屏幕关闭的情况下,setAndAllowWhileIdle也要10分钟才发送广播,或提醒通知。
