app怎么做到准时提醒?比如到时间手机铃声、振动、通知栏

bigkele 2026-07-20 12:02 1

我们公司正在做一个安卓的app给护工使用,护工上门给客户服务时根据工单需要签到打卡,签到成功后会生成三条随机的人脸验证计划,接口会返给前端,前端按照计划的时间执行定时任务,比如早上八点签到成功,然后生成第一条人脸抽查8点50 ,那么app定时任务会在8点50手机铃声+振动+通知栏有人脸验证的消息,打开app会弹出人脸验证的按钮,第二条比如9点40,第三条比如10点30,现在问题是手机已经打开通知功能,但是基本都不会按时执行,app在后台运行息屏后手机放一边没有使用,比如第一条8点50 可能会8点52才会提醒,可能第二条到9点40后不提醒过几分还是没提示,但是只要打开手机提醒马上就出来,这是咋回事,各位佬有什么办法能解决app后台运行及时提醒的问题吗

最新回复 (4)
  • Unic 07-20 12:13
    1

    本质是 Android 的 Doze 模式 + App Standby + 厂商激进省电策略导致的。


    问题根因


    当手机息屏且一段时间没动时,系统会进入 Doze 模式



    • 普通 AlarmManager.set() / setExact() 会被推迟到下一个维护窗口

    • HandlerTimerWorkManagerCoroutine delay 等全部不可靠

    • 即使你开了通知权限,系统也会把通知“攒着”,等屏幕亮起/用户操作时才真正弹出

    • 国产机(小米、华为、OPPO、vivo、荣耀等)还会额外杀后台,比原生 Android 更狠





  • 狗王 07-20 12:23
    2

    你这像是安卓的省电机制把任务延后了, 看一下你们用的是alarmmanager、workmanager还是普通handler/定时线程, 如果你们用的是workmanager、普通定时器、协程delay、后台线程,甚至只是setexact(),息屏静置后都可能被doze推迟;亮屏时系统退出doze,所以积压任务立刻冒出来,可以用adb复现测试一下

  • bigkele 楼主 07-20 13:53
    3

    感谢,上面的方法基本上都尝试了,还是无法解决手机锁屏导致延迟

  • Unic 07-20 13:55
    4

    那换个思路吧; 直接对接系统的日历;

    创建任务到日历里面, 使用系统的提醒; 这个最准确了;

    还不用自己做保活等等

* 帖子来源Linux.do
返回