android AlarmManager 在凌晨12点 手机实机无法达成的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android AlarmManager 在凌晨12点 手机实机无法达成的问题?相关的知识,希望对你有一定的参考价值。

我想用AlarmManager的setRepeating达成每天凌晨12点广播在模拟器上是可以用的,但不知为什在实机上就没办法 Intent intent = new Intent(Clock_1.this,CallAlarm.class);PendingIntent sender=PendingIntent.getBroadcast(Clock_1.this,mycursor.getInt(0), intent,PendingIntent.FLAG_CANCEL_CURRENT);AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);am.setRepeating(AlarmManager.RTC_WAKEUP,0,AlarmManager.INTERVAL_DAY,sender);有人知道怎麼解决吗?? 请告诉 我谢谢

谢谢你的回覆我有试过其他手机了 一样没办法 不知为什麼 参考技术A 这个有可能是你真机上的闹铃服务不是标准的,也就是说手机rom的这部分被改过,你可以在试下别的手机

Android 8.0 AlarmManager 后台定时任务

以前在Android 4.0时,alarmManager 没什么问题。后来android为了优化系统耗电情况,引入了doze模式,参见此页

https://developer.android.com/training/monitoring-device-state/doze-standby

简单地说,系统会长时间待机后,会自动进入doze模式,这种模式里,alarmManager啥的都不好用了,系统会自动从doze模式转出来一小段时间,把刚在在doze里被忽略的事件(比如说alarmManager)执行。这样一来,alarmManager根本无法定时调用了。

其实,对于每个应用,这个模式是可以配置的,一般在 Settings > Battery > Battery Optimization,也可以用代码打开设置页面,让用户设置,下面是一段别人写的代码:

 Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);  
           intent.setData(Uri.parse("package:user.zhuku.com"));  
           startActivity(intent);  

华为手表,在wear os 2.0上,也有类似的选项。

以上是关于android AlarmManager 在凌晨12点 手机实机无法达成的问题?的主要内容,如果未能解决你的问题,请参考以下文章

Android AlarmManager 通过时区或夏时制调度

Android AlarmManager 一小时后触发

[RK3568][Android11]AlarmManager使用说明

[RK3568][Android11]AlarmManager使用说明

Android - AppWidgets、AlarmManager 和 AsyncTask

AlarmManager Android 每天