V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
treePerson
V2EX  ›  Android

CountDownTimer + WakeLock 方案, Android 休眠状态下不出提示音

  •  
  •   treePerson · 2020-04-21 13:35:15 +08:00 · 4330 次点击
    这是一个创建于 1464 天前的主题,其中的信息可能已经有所发展或是发生改变。
    没有其他要求,只要倒计时结束时能出提示音就可以了
    现在的情况是,灭屏状态下到时间没有反应,直到手动亮屏,迟来的提示音才被激活
    除非在亮屏或保持 adb 连线的状态下才能被正确激活
    加了 WakeLock,并没什么作用
    对于这样的问题还有其他什么思路吗?
    一般是 wakelock 的原因,还是 CountDownTimer 的原因?
    不考虑加系统级的 POWER 权限,因为要上架。
    也不考虑 8.0 以下的系统。
    4 条回复    2020-04-21 22:19:09 +08:00
    KINGOD
        1
    KINGOD  
       2020-04-21 14:36:21 +08:00
    试试 AlarmManager.setExactAndAllowWhileIdle(int type, long triggerAtMillis, PendingIntent operation)
    有些限制,比如平时 1min 只能触发一个,DeviceIdle 模式下 15min 触发一个,等等,可以看下文档。
    treePerson
        2
    treePerson  
    OP
       2020-04-21 14:46:00 +08:00
    @KINGOD
    谢谢,将 CountDownTimer 换成 AlarmManager 的思路我也有了,正在研究。很高兴提前获知这是一个值得探索的方向。不过我也看到了许多关于 AlarmManager 不够精确的言论,不知道最终能否成功实现。我的 app 其实对触发次数没有需求,只要一次就可以了,不过对精确性是有需求的。可以简单的理解为闹钟软件,而且不用考虑关机、重启的情况。
    另外,目前只在华为的设备上做过测试,不知道厂商对这方面有没有特别设定。下面我会写一个测试 app 试试各种方案。
    helloworldchao
        3
    helloworldchao  
       2020-04-21 21:28:19 +08:00 via Android
    可以试试在 foreground service 中做这个功能,提高一下 APP 在系统中的权重,减少被限制的情况
    treePerson
        4
    treePerson  
    OP
       2020-04-21 22:19:09 +08:00
    @helloworldchao 不过目前用的就是前台服务
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5605 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:37 · PVG 09:37 · LAX 18:37 · JFK 21:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.