一个关于闹钟的遗憾
前言
- 由于我们组的项目主体是一个任务清单的app,那实现的功能里时间提醒就必不可少。班级的作业任务已经有截止日期的显示,所以不需要再重复添加闹钟功能,最后考虑是在自建任务的界面中添加闹钟功能,于是我就开始了对于安卓的闹钟组件的探索。
初见
- 刚接触学习的时候并没有遇到什么太大的困难,闹钟组件本就是安卓自带的,所以只要按照教程敲出代码,适当根据自身情况改动就可达到设置闹钟的功能。
第一个问题
- 很快我遇到了第一个问题。在测试闹钟功能的时候,我发现到了设置时间闹钟并没有按时响起,有时候准,有时候会晚一点,但都是在设定那一分钟中发生的。于是我去查阅了资料,原来从API 19开始,Alarm的机制改为了非准确传递。好吧,你只要能在那一分钟响起,到底哪一秒也不是很重要了。
第二个问题
- 接着我遇到了第二个问题。安卓闹钟组件有两个功能,设置时间提醒与设置重复闹钟提醒。但是时间提醒只能设置当天的,不能设置未来几天的,重复闹钟也只是能做到例如每周一循环这样的功能,并不符合我们想要实现的指定日期、指定时间的提醒,所以我开始自我探究,最后是配合日历与一些判断达到了目的。
第三个问题
- 终于来到这个最终导致我决定删除闹钟功能的问题了,那就是——关闭app或是关机闹钟就无法响起。重复闹钟确实可以做到重复响起,但只有再点进app的时候才会看见闹铃响起的消息提示,可那有什么用呢???
- 于是我开始寻找解决方案。关闭app或是关机闹铃不响,也就是一个程序被杀死的问题,那我就想办法写一个守护进程就好了嘛,你杀我有甲还不行吗。
- 尝试第一次:在原生的Android系统上使用AlarmManager
- 这是我看到的第一个方法,但没什么好说的,我们现在用的手机基本都是第三方的rom,根本就找不出真正“原生”的安卓,这条gg
- 尝试第二次:在网上学习各种守护进程的代码
- 网上找了很多参考,什么ALDL双进程守护,MarsDaemon第三方库都试过了,但每一次就看见这些致命的信息:华为手机不适用,只有vivo手机适用
- 如果我不能做到全部手机通用,那我还要这个功能干什么呢?!于是我继续尝试……
- 尝试第三次: 调用本地手机的原生闹钟
- 很好,出版厂商会修改闹钟的包名,又不能做到全手机适用了
总结
- 其实做闹钟的时候还遇到挺多问题的,比如怎么删除闹钟,怎么设置多个闹钟,但这都不重要了,我只想说一句
- 闹钟,wdnmd
posted @
2020-01-03 15:47
陆彦杰
阅读(
180)
评论()
编辑
收藏
举报