一个关于闹钟的遗憾

一个关于闹钟的遗憾

前言

  • 由于我们组的项目主体是一个任务清单的app,那实现的功能里时间提醒就必不可少。班级的作业任务已经有截止日期的显示,所以不需要再重复添加闹钟功能,最后考虑是在自建任务的界面中添加闹钟功能,于是我就开始了对于安卓的闹钟组件的探索。

初见

  • 刚接触学习的时候并没有遇到什么太大的困难,闹钟组件本就是安卓自带的,所以只要按照教程敲出代码,适当根据自身情况改动就可达到设置闹钟的功能。

第一个问题

  • 很快我遇到了第一个问题。在测试闹钟功能的时候,我发现到了设置时间闹钟并没有按时响起,有时候准,有时候会晚一点,但都是在设定那一分钟中发生的。于是我去查阅了资料,原来从API 19开始,Alarm的机制改为了非准确传递。好吧,你只要能在那一分钟响起,到底哪一秒也不是很重要了。

第二个问题

  • 接着我遇到了第二个问题。安卓闹钟组件有两个功能,设置时间提醒与设置重复闹钟提醒。但是时间提醒只能设置当天的,不能设置未来几天的,重复闹钟也只是能做到例如每周一循环这样的功能,并不符合我们想要实现的指定日期、指定时间的提醒,所以我开始自我探究,最后是配合日历与一些判断达到了目的。

第三个问题

  • 终于来到这个最终导致我决定删除闹钟功能的问题了,那就是——关闭app或是关机闹钟就无法响起。重复闹钟确实可以做到重复响起,但只有再点进app的时候才会看见闹铃响起的消息提示,可那有什么用呢???
  • 于是我开始寻找解决方案。关闭app或是关机闹铃不响,也就是一个程序被杀死的问题,那我就想办法写一个守护进程就好了嘛,你杀我有甲还不行吗。
    • 尝试第一次:在原生的Android系统上使用AlarmManager
      • 这是我看到的第一个方法,但没什么好说的,我们现在用的手机基本都是第三方的rom,根本就找不出真正“原生”的安卓,这条gg
    • 尝试第二次:在网上学习各种守护进程的代码
      • 网上找了很多参考,什么ALDL双进程守护,MarsDaemon第三方库都试过了,但每一次就看见这些致命的信息:华为手机不适用,只有vivo手机适用
      • 如果我不能做到全部手机通用,那我还要这个功能干什么呢?!于是我继续尝试……
    • 尝试第三次: 调用本地手机的原生闹钟
      • 很好,出版厂商会修改闹钟的包名,又不能做到全手机适用了

总结

  • 其实做闹钟的时候还遇到挺多问题的,比如怎么删除闹钟,怎么设置多个闹钟,但这都不重要了,我只想说一句
  • 闹钟,wdnmd
posted @ 2020-01-03 15:47  陆彦杰  阅读(121)  评论(0编辑  收藏  举报