AlarmManager 包含的主要方法:
定时器主要类型:
下面我们创建一个最简单的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;
static AlertDialog 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("alrm timer 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);
我们设置一个重复闹钟就可以了,以后都不再需要重复赋值。