
正文
android定时,android定时开关机
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
android 实现本地定时推送(兼容)
首先写几点感悟:
闹钟类,目前只用过 AlarmManager.RTC_WAKEUP 类型,这个是精确定时,很多博客都提到过,不了解的可以自己查查。然后 action 用来启动服务或者广播, alarmId 就是 requestCode ,用来区别不同的闹钟。该工具类不仅仅可以用来定时通知,只要稍加改动,定时广播、定时任务、定时弹窗都是可以做的。
服务和广播配置一个就可以了,目前我才有的是服务的配置方法
服务的配置方法:
广播的配置方法:
由于查看的资料太多了,所以就不一一列举了,然后提供一个测试方法,可以在 MainActivity 的 OnCreate 方法中调用:
相关问答
Q1: Android定时的基本实现
在Android中大概又两种实现方式:一种是java中的Timer类,一种是Android中的Alerm机制。两者功能差不多。
Alerm具有cup运行锁,而Timer不具有cpu锁。
每种手机都具有自己的休眠策略,当长时间不是手机的情况下,cpu就会进入休眠状态。在这种情况下Timer将无法工作。而Alerm具有cpu锁,将会导致cpu无法休眠。
AlarmManager manger=(AlarManger)getSystemService(Context.ALARM_SERVICE);
manger.set(int flag,long time,PendingIntent pendingIntent);
set方法参数说明:
第一个参数flag为工作类型:
AlarmManger .ELAPSED_REALTIME:让定时时间从开机算起时间算起,但不会唤醒cpu。
AlarmManger.ELAPSED_REALTIME_WAKEUP:同样表示让定时时间从开机算起,但会唤醒 CPU。
RTC:表示让定时任务从1970年1月1日算起,但是不唤醒cpu。
RTC_WAKEUP:表示让定时任务从1970年1月1日算起,但是唤醒cpu。
提示:SystemClock.elapsedReadtime()---获取系统开机至今所经历的毫秒数;
System.currentTimeMillis()-------方法获取1970年1月1日至今天的毫秒数;
第二个参数: 延时的时间,单位毫秒;
第三个参数: PendingIntent指定具体动作;
注意:Android4.4版本后set方法触发不准确,有可能会延时一段时间执行(这不是Bug,是电池性能优化,系统会检测目前有多少个Alarm任务存在,然后将触发相近的几个任务一起执行)
如果要精确执行,将 setExact() 方法代替set()方法。
cancel ( PendingIntent operation )
方法将会取消Intent匹配的任何闹钟。
setRepeating(int type,long triggerAtTime,long interval,PendingIntent operation);
参数说明:interval重复时间间隔;(4.4后触发不准时)
AlarmManger的其它功能:
设置系统时间和时区
添加权限:android.permission.SET_TIME;
通过setTime(long millis)方法设置系统时间;
需要添加android.permission.SET_TIME_ZONE权限。
通过setTimeZone(String tz)方法设置时区;
Q2: Android8 后台定时提醒通知
个推文档要求必须声明一个名为pushservice的后台进程,亲测应用被杀后依然存活,但系统重启无效。
在后台进程中创建一个定时器,我这里使用的是RxJava,创建了一个每隔1分钟就执行一次的定时任务。
需要注意的是,这里创建的是一个后台 进程,进程 ...和当前进程不一样的进程,在这个独立的进程中,不可以使用应用进程中的全局变量,否则会产生空指针异常。比如取Application就是空。当然,你可以使用跨进程通信的方法解决。
我这里是利用这个进程每隔一分钟启动了一个IntentService,以startForegroundService的方式,这也是谷歌的要求。然后在IntentService里可以访问应用app的资源。我这里是在IntentService里检查相关的条件是否满足,如果满足,就弹出一条通知提醒用户。看到这里你肯定要问,startForegroundService的方式必须调用startForeground显式弹出一个通知,如果不满足条件或者我就是不想弹任何通知,只是想偷偷的做一些后台任务呢?原则上谷歌是不允许这么做的,但是奈何任何系统都有bug,而我发现了一个可以避免弹通知的方法....
Android8 避免startForeground方法弹出通知
利用上面所述,你应该可以实现自己的后台任务了。
Q3: android怎么实现定时的操作
有时候我们会遇到定时打开某些应用的这样一种需求。
比如最近我在使用读者 Android版的应用的时候,每次打开应用,应用发送一定的联网请求之后就可以给我的账号增加一定的积分,连续登录的次数越多,积分奖励越多。而一旦有一天没有登录,积分奖励又从最初的值开始。
为了避免某一天忘记打开应用或者应用打开后联网需要等待一段时间,可以通过定时达人这款手机应用定时地打开其它应用。
工具/原料
Android手机(我手机目前系统版本是4.2.2)
定时达人(TimeDo)
读者 Android应用
方法/步骤
在手机上安装定时达人软件
定时达人有自己的网站,相关应用在各大应用商城也有。可以通过apk进行安装,可以从应用商店下载安装。我是从google play上下载安装的。
添加新任务
设置任务——设置时间
设置任务——给任务取个名字
设置任务——添加新任务
选择运行程序一栏
设置任务——选择定时打开的应用程序
点击应用程序,选择读者。
保存设置
这里需要点两次保存,之后就回到了定时达人主页面。
通过立即执行进行测试设置效果
单击定时打开读者一栏,在弹出下拉框中选择立即执行来立即执行任务。在设置正确的情况下读者应用被打开,通知栏会有相应通知提示。
在之前的设置步骤中,保持了默认的循环方式,即周循环,一周的每一天都选中。按照设置,每一天的指定时间都可以自动打开相应应用。
Q4: Android开发——定时器处理
开发中经常遇到用计时器的时候,例如:每秒输出一次log,这时候就要用到延时操作,这里总结了几种常用的方法。
AlarmManager 是Android的全局定时器,可以在指定时间执行定时任务。定时任务通过PendingIntent 的 getActivity()、getService()或 getBroadcast() 来执行。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent出来,在接收到设定的Intent时执行定时任务。
(2) setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
该方法用于设置重复闹钟,其中参数说明如下:
type:闹钟类型
startTime:首次执行闹钟的时间
intervalTime:两次执行闹钟的时间间隔
pi:闹钟响应动作
(3) setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
该方法也用于设置重复闹钟,与第二个方法相似,区别在于其两次闹钟执行的间隔时间不是固定的。
AlarmManager实现定时的方法,我还没有用到过,以上内容是在网上查找资料后自己在一个小demo中小小试验了的,有错误或描述不清的地方请见谅。下面是我参考的介绍AlarmManager的三篇文章。
Q5: Android 13将会定时自动清理剪贴板的内容,此举有何好处?
随着信息化时代的到来,网络安全也越来越多的受到了人们的关注。由于人们的各种工作和生活都越来越离不开手机与网络,所以人们的个人信息在这个过程之中能够被有心人所窃取的可能性也会出现大大增加的情况。所以,越来越多的科技公司将保障用户在使用电子产品时的隐私安全放在发展的第1位。例如安卓13推出了定时自动清理剪贴板内容的功能,这一举措对于保障用户的个人隐私就有非常大的好处。
现在是一个大数据的时代,很多的APP为了推出众多适合用户需求的量身定制内容,从而吸引越来越多的用户来使用这个APP,进而从中获取更多的利益,存在着过度窃取用户个人信息的现象。由于用户在使用搜索功能的时候会不可避免地使用的输入法,所以很多APP就会窃取输入法上的相关内容,尤其是在剪贴板上的内容。有些用户甚至会将自己的账号与密码以及手机通讯录等信息放在剪贴板上,这就加大了自己个人信息泄露的可能性。
那么用户将手机系统升级为安卓13之后,能够隔一段时间就自动清理剪贴板上的内容。虽然部分用户可能会觉得这个功能会给自己带来一定程度上的不便,但是却能够很好的保障用户的个人信息的安全,所以小编认为这项升级的功能是非常有意义的,是非常贴合用户的需求的。
小编认为人们在日常使用手机的过程之中,也要建立足够的保障个人信息安全的意识。例如,对于一些个人账号密码的设置要相对的复杂,不要将一些重要账号的密码设置为自己常用的同一个密码,对于各种不确定的链接,也不要随意的点进去。






