Android定时的基本实现

作者: 沈凤德 | 来源:发表于2017-02-14 08:44 被阅读419次

在Android中大概又两种实现方式:一种是java中的Timer类,一种是Android中的Alerm机制。两者功能差不多。

Alerm具有cup运行锁,而Timer不具有cpu锁。

每种手机都具有自己的休眠策略,当长时间不是手机的情况下,cpu就会进入休眠状态。在这种情况下Timer将无法工作。而Alerm具有cpu锁,将会导致cpu无法休眠。

只启动一次Alarm(精确与精确两种):

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()方法。


删除Alarm:

cancel(PendingIntent operation)

方法将会取消Intent匹配的任何闹钟。

(关于Intent的匹配查看filterEquals(Intent other)方法的说明可知两个Intent从intent resolution(filtering)(Intent决议或过滤)的角度来看是一致的,即认为两个Intent相等。即是说,Intent的action,data,type,class,categories是相同的,其他的数据都不在比较范围之内。)

重复执行Alarm:

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)方法设置时区;

相关文章

  • Android定时的基本实现

    在Android中大概又两种实现方式:一种是java中的Timer类,一种是Android中的Alerm机制。两者...

  • 2019-03-06

    Android 定时开机方案 此方案用于实现Android主板的定时开机与Watchdog功能,应用于一些特殊产品...

  • 后台执行的定时任务

    另可参考:Android 定时任务的多种实现方式 Android 中的定时任务一般有两种实现方式,一种是使用 Ja...

  • linux crontab实现每秒执行

    linux crontab 实现定时任务非常方便 基本格式 :* * * * ...

  • PollingTask,一个简单的心跳轮询库

    做定时任务对于android可以有好多种实现方式: 1. AlarmManager 利用系统的"闹钟"功能来做定时...

  • 支付

    android微信支付问题总结 - CSDN博客 Android中定时器的3种实现方法 - CSDN博客 Andr...

  • Timer与Quartz--Android和Java开发你都需要

    前言:关于任务定时调度,Android基本用的要么Timer要么Handler配合Timer,而Java后端基本也...

  • 2017.12.21学习总结

    下午学习了定时器,定时器分为高级定时器、通用定时器和基本定时器,我们主要研究通用定时器。 定时器中断实现步骤:...

  • Android定时关机问题解决

    昨天写的简易APP实现android定时关机,今天又倒腾了一天关于定时关机的,发现一些问题1.设置定时关机循环时(...

  • Android使用AlarmManager实现定时推送功能

    Android定时进行消息通知到通知栏 要实现本地定时通知最主要的是要用到系统的闹钟管理器AlarmManager...

网友评论

    本文标题:Android定时的基本实现

    本文链接:https://www.haomeiwen.com/subject/yxazittx.html