AlarmManager的使用与几个获取时间的操作

来源:互联网 发布:java io深入理解 编辑:程序博客网 时间:2024/06/06 15:00

AlarmManager

        定时器,会到指定的时间时执行相应的操作。

        获取AlarmManager:

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

常量说明

        ELAPSED_REALTIME:真实时间流逝,当手机休眠时不进行相应的操作。

        ELAPSED_REALTIME_WAKEUP:真实时间流逝。当手机休眠时也进行相应的操作。

        RTC:手机时间流逝。当手机处于休眠状态时,不进行相应的操作。

        RTC_WAKEUP:手机时间流逝。当手机处于休眠状态时,也进行相应的操作。

        ELAPSED与RCT的最大区别:后者是根据手机的时间来的,也就是说可以通过更改手机上的时间,影响操作的执行时间;而前者却是真实的时间流逝,即使更改了手机时间,也不会影响操作的执行时间

以上的四个值都是常用方法中type的取值。

        INTERVAL_DAY:一天。

        INTERVAL_FIFTEEN_MINUTES:十五分钟。

        INTERVAL_HALF_DAY:半天。

        INTERVAL_HALF_HOUR:半小时。

        INTERVAL_HOUR:一小时。

常用方法

        set(type, triggerAtMillis, operation):设置一个闹钟(这里指的是定时执行的任务),该任务不会重复执行。到时间后会执行operation指向的操作。其中triggerAtMillis指的是操作开始执行的时间,如果该时间小于当前的时间,那么会立即执行operation

        setRepeating(type, triggerAtMillis, intervalMillis, operation);设置一个闹钟,该闹钟会定时、重复执行。其中intervalMillis指的是两次执行之间相隔的时间。其余的同上。

        setInexactRepeating(type, triggerAtMillis, intervalMillis, operation);和setRepeating方法类似。区别是:setInexactRepeating不一定会在指定的时间处执行,有可能会有偏差(是为了更节约能量),而setRepeating却是在给定的时刻执行,不会有偏差。

        cancel():取消相应的操作。

示例

Intent intent = new Intent(MainActivity.this, MyService.class);final PendingIntent pendingIntent = PendingIntent.getService(this, 100,intent, PendingIntent.FLAG_UPDATE_CURRENT);final AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 24* 60 * 60 * 1000 + 60 * 1000, 1000, pendingIntent);findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {public void onClick(View v) {manager.cancel(pendingIntent);}});

获取时间方法

        System.currentTimeMillis:获取系统时间,该时间是从1970年1月1日开始计时的,一直到系统当前的时间。要注意:由于系统的时间可以人为的进行修改,它得到的值也是从1970年到修改后的时间,并不一定是真正的当前时间。例如:当前4月14日,如果手机的时间被更改为4月15日,那么它得到的值就是到4月15日的,并不是到4月14的。

        SystemClock.elapsedRealtime():得到的是系统开机后的时间,即使系统的时间不是真正的时间也可以得到正确的开机时长。并且把系统休眠的时间也计算在内

        SystemClock.uptimeMillis:和上面的一个基本类似,唯一区别是:该方法不把系统休眠的时间计算在内






0 0
原创粉丝点击