展会信息港展会大全

Android AlarmManager简单例子
来源:互联网   发布日期:2016-01-13 21:41:46   浏览:1141次  

导读:AlarmManager 包含的主要方法:[java]// 取消已经注册的与参数匹配的定时器瘀漀椀搀 cancel(PendingIntent operation)...

AlarmManager 包含的主要方法:

[java]

// 取消已经注册的与参数匹配的定时器

voidcancel(PendingIntent operation)

//注册一个新的延迟定时器

voidset(int type, long triggerAtTime, PendingIntent operation)

//注册一个重复类型的定时器

voidsetRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)

//注册一个非精密的重复类型定时器

void setInexactRepeating (int type, long triggerAtTime, long interval, PendingIntent operation)

//设置时区

voidsetTimeZone(String timeZone)

定时器主要类型:

[java]

publicstaticfinalintELAPSED_REALTIME

// 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时 间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3(0x00000003)。

publicstaticfinalintELAPSED_REALTIME_WAKEUP

//能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。

publicstaticfinalintRTC

//当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用 System.currentTimeMillis()获得。系统值是1 (0x00000001) 。

publicstaticfinalintRTC_WAKEUP

//能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。

Public staticfinalintPOWER_OFF_WAKEUP

//能唤醒系统,它是一种关机闹铃,就是说设备在关机状态下也可以唤醒系统,所以我们把它称之为关机闹铃。使用方法同RTC类型,系统值为4(0x00000004)。

下面我们创建一个最简单的alarm程序。 开机启动一个broadcast,然后驱动一个alarm让它每隔1秒钟启动一次。

public class test_chargeReceive extends BroadcastReceiver {

private static AlarmManager mAlarmManager=null;

private static PendingIntent mIdleIntent;

private static final int IDLE_REQUEST = 0;

static long now=0;

staticAlertDialog dialog=null ;

@Override

public void onReceive(Context context, Intent intent) {

if(mAlarmManager==null){

mAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

Intent idleIntent = new Intent("com.keenhi.charge", null);

mIdleIntent = PendingIntent.getBroadcast(context, IDLE_REQUEST, idleIntent, 0);

// mAlarmManager.cancel(mIdleIntent);

mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, mIdleIntent);

}

String action = intent.getAction();

if (action.equals("com.keenhi.charge")){

mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, mIdleIntent);

now= System.currentTimeMillis();

Log.i("alrmtimer now="+now);

}

}

manifest.xml的重要代码:

<receiver android:name="test_chargeReceive">

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED"/>

<action android:name="com.keenhi.charge"/>

</intent-filter>

</receiver>

上面程序的功能很简单,一是让它开机接收到"android.intent.action.BOOT_COMPLETED"广播就启动,然后建立一个alarm,每隔1秒钟就发一次"com.keenhi.charge"。 为了简单我们自发自收,收到后就显示一个系统的目前的毫秒数。

上面的alarm是有一次,所以我们每次执行时再启动一次alarm。这样做比较通用我们想停就停,间隔时间也可以自由更改。 如果我们只需要实现一个重复的alarm,我们可以这样做。

mAlarmManager.setInexactRepeating

(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000, mIdleIntent);

我们设置一个重复闹钟就可以了,以后都不再需要重复赋值。

作者:wantianpei

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港