android系统定制功能:定时重启
来源:互联网 发布:淘宝卖家改评价链接 编辑:程序博客网 时间:2024/06/06 01:19
不积跬步无以至千里
首先接到这个功能(定时重启)的时候有点茫然,为什么要做这个功能啊?不是已经有一个定时开关机了吗?把定时关机和定时开机设置有个小间隔不就是定时开关机了吗?哈哈,当然有的可能没有定时开机或者关机,再说客户要求了也不能不做,那么接下来就说说我做定时重启的思路和步骤!先上一下效果图吧如下图:
1、界面
一个功能嘛,肯定是要实现它的界面了,因为之前有了开关机的功能了,所以再加一个定时重启,应该很简单的吧,但是我刚开始做这个界面的时候并不顺利,因为他并不和我们平常一样找到数据源(一个数组或者一个List)添加进去这个“定时重启”这个字符串就可以了,因为通过我查看代码看出这个数据源是来源于查询数据库获取的数据源!如图所示:
添加数据——向数据库里插入一条数据代码如图所示:
这里界面整体用的listview,适配器用的是CursorAdapter,这里针对存储定制闹钟重启手机的实体类如下图TimerSwitch:
bindview加载视图
这里通过获取到数据库传上来的数据,然后通过实体类中id来判断是power-on、power-off还是reboot,如果是reboot就给其图标、名字
2、逻辑处理
这一块针对一些字符串的添加就不说了,然后说一下设置闹钟到重启的逻辑过程。
这里是把定时重启的开关的监听如图:
如图所示,可以看出它会先delete那些失效的TimerSwitch,然后去更新这次你开启定时重启的闹钟时间
接下来看一下TimerSwitchUtils.updateTimerSwitch这个方法如下图:
这里是把最新的闹钟更新数据库
接下来就是其中方法TimerSwitchUtils.enableTimerSwitch方法:
这里是根据不同的id去操作power-on、power-off、reboot,接着追踪registerNextTimerSwitchOn方法
这里可以看出是定时一个闹钟去开启广播,其中的广播的action如下:
接下来我们根据这个action去追踪这个广播为:
接下来看一下TimerSwitchReceiver代码如下图:
看代码可知,接到发过来的延迟广播,判断是不是重复闹钟
不是则:重新刷新闹钟信息数据库
是则:设置定时闹钟
监听是不是手机是否处于打电话的状态
是则:先接听电话,等待电话接听状态结束
否则:执行fireShutDown方法,如下图:
据图可知,会先发送广播把系统的对话框清除(猜测以免有冲突),再发送一个延迟启动ShutDownActivity,接下来看一下ShutDownActivity中的处理如下图:
据图所知,我们这个Activity以对话框的形式出现
接下来看一下onCreate方法:
可知,加了一个唤醒锁,然后开启了一个计时器,并监听电话状态,看一下计时器。看一下系统重写的对话框的方法如下图:
每次重新显示对话框调用:
初始化对话框:
会出现如图对话框:
再看一下实现重启的方法startReboot:
通过Intent.ACTION_REBOOT的action来启动这个重启的Activity,Intent.EXTRA_KEY_CONFIRM是是否弹出确认重启对话框(当然不用),Intent.FLAG_ACTIVITY_NEW_TASK开启一个新的Task栈
观赏也是种力量
- android系统定制功能:定时重启
- 为Android系统定制重启功能
- 为Android系统定制重启功能
- 为Android系统定制重启功能
- WPF中,定时系统重启功能的实现
- 【Rochchip 定制】添加自动重启功能
- Android 4.1.2系统添加重启功能
- Android多次重启系统的功能实现
- Android 4.1.2系统添加重启功能
- Android调用系统关机与重启功能
- Android 4.1.2系统添加重启功能
- Android系统定制----删除系统锁屏功能
- Android-x86 5.1系统源码重定制开发----------开篇《阐明》
- android 增加重启功能
- android添加重启功能
- WinCE系统USB功能定制
- WinCE系统USB功能定制
- WinCE系统USB功能定制
- 【Python】Python List list()方法
- SOC官方网址
- 阿里云——手把手教你搭建个人网站
- 【MySQL之InnoDB】幻读(phantom problem)
- Maven —— 二、大体认识pom.xml 中元素
- android系统定制功能:定时重启
- Hibernate之类级别查询
- windows server 2012安装zabbix客户端
- 匿名函数(闭包)
- 多线程下安全的单例模式(双重校验锁实现,登记者模式实现,利用内部类实现,利用枚举实现)
- 剑指offer_发散思维---求1+2+3+...+n
- MyBatis使用Collection查询多对多或一对多结果集bug
- ubuntu16.04 SSH服务器与win 之间互传文件以及服务器搭建
- React学习之进阶ref的必要性(十三)