zoukankan      html  css  js  c++  java
  • 一个关于闹钟的遗憾

    一个关于闹钟的遗憾

    前言

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

    初见

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

    第一个问题

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

    第二个问题

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

    第三个问题

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

    总结

    • 其实做闹钟的时候还遇到挺多问题的,比如怎么删除闹钟,怎么设置多个闹钟,但这都不重要了,我只想说一句
    • 闹钟,wdnmd
  • 相关阅读:
    测试学习使用
    Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
    web框架之Spring-MVC环境搭建
    serialVersionUID
    在eclipse中部署发布web项目 和 更改eclipseweb项目发布的路径
    servlet HttpSession 监听器
    java web 中的转发和重定向
    Spring MVC 中的 forward 和 redirect
    各个部门英语标识
    添加滚动条,内容多时显示,内容少时隐藏
  • 原文地址:https://www.cnblogs.com/algerlu/p/12145301.html
Copyright © 2011-2022 走看看