zoukankan      html  css  js  c++  java
  • Android 开发工具类 17_setAlarm

    Alarm 是在应用程序生命周期之外设置的,所以它们十分适合于调度定时更新或者数据查询,从而避免了在后台持续运行 Service。但触发 Alarm 时,就会广播指定的 Pending Intent。

    Alarm 类型:

    1、RTC_WAKEUP:在指定的时间唤醒设备,并激活 Pending Intent。

    2、RTC:在指定的时间点激活 Pending Intent,但是不会唤醒设备。

    3、ELAPSED_REALTIME:根据设备启动之后经过的时间激活 Pending Intent,但是不会唤醒设备。经过的时间包含设备休眠的所有时间。

    4、ELAPSED_REALTIME_WAKEUP:在设备启动并经过指定的时间之后唤醒设备和激活 Pending Intent。

     1 private void setAlarm() {
     2     /**
     3      * Listing 9-16: Creating a waking Alarm that triggers in 10 seconds
     4      */
     5     // Get a reference to the Alarm Manager
     6     AlarmManager alarmManager = 
     7      (AlarmManager)getSystemService(Context.ALARM_SERVICE);
     8   
     9     // Set the alarm to wake the device if sleeping.
    10     int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
    11   
    12     // Trigger the device in 10 seconds.
    13     long timeOrLengthofWait = 10000;
    14   
    15     // Create a Pending Intent that will broadcast and action
    16     String ALARM_ACTION = "ALARM_ACTION";
    17     Intent intentToFire = new Intent(ALARM_ACTION);
    18     PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0,
    19       intentToFire, 0);
    20   
    21     // Set the alarm
    22     alarmManager.set(alarmType, timeOrLengthofWait, alarmIntent);
    23     
    24     /**
    25      * Listing 9-17: Canceling an Alarm
    26      */
    27     alarmManager.cancel(alarmIntent);
    28   }
    29   
    30   private void setInexactRepeatingAlarm() {
    31     /**
    32      * Listing 9-18: Setting an inexact repeating alarm
    33      */
    34     //Get a reference to the Alarm Manager
    35     AlarmManager alarmManager = 
    36     (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    37     
    38     //Set the alarm to wake the device if sleeping.
    39     int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
    40     
    41     //Schedule the alarm to repeat every half hour.
    42     long timeOrLengthofWait = AlarmManager.INTERVAL_HALF_HOUR;
    43     
    44     //Create a Pending Intent that will broadcast and action
    45     String ALARM_ACTION = "ALARM_ACTION";
    46     Intent intentToFire = new Intent(ALARM_ACTION);
    47     PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0,
    48      intentToFire, 0);
    49     
    50     //Wake up the device to fire an alarm in half an hour, and every 
    51     //half-hour after that.
    52     alarmManager.setInexactRepeating(alarmType,
    53                               timeOrLengthofWait, 
    54                               timeOrLengthofWait,
    55                               alarmIntent);
    56   }
    57 }
  • 相关阅读:
    jQuery1.3.2 源码学习 2 两个重要的正则表达式
    学习 jQuery 4 使用方法选择
    学习 jQuery 6 在 TreeView 中实现全选
    jQuery1.3.2 源码学习4 init 函数分析 2
    学习 jQuery 3 选择器
    学习 jQuery 5 筛选和过滤器
    条款9:在删除选项中仔细选择
    优化3D图形流水线
    指针相减
    浅谈水体的实现
  • 原文地址:https://www.cnblogs.com/renzimu/p/4536958.html
Copyright © 2011-2022 走看看