AlarmManager是Android用来实现一个闹钟的服务,它一般不实例化,而是通过Context.getSystemService(Context.ALARM_SERVICE)方法获得
属性或方法名称 | 说明 |
ELAPSED_REALTIME | 设置闹钟时间,从系统启动开 始 |
ELAPSED_REALTIME_WAKEUP | 同上,如果设备休眠则唤醒 |
INTERVAL_DAY | 设置闹钟,间隔一天 |
INTERVAL_HALF_DAY | 设置闹钟,间隔半天 |
INTERVAL_FIFTEEN_MINUTES | 设置闹钟,间隔15分钟 |
INTERVAL_HALF_HOUR | 设置闹钟,间隔半个小时 |
INTERVAL_HOUR | 设置闹钟,间隔一个小时 |
RTC | 设置闹钟时间从系统当前时间开(System.currentTimeMillis()) |
RTC_WAKEUP | 同上,设备休眠则唤醒 |
set(int type,long triggerAtTime,PendingIntent operation) | 设置在某个时间执行闹钟 |
setRepeating(int type,long triggerAtTime,long interval PendingIntent operation) | 设置在某个时间重复执行闹钟 |
setInexactRepeating(int type,long triggerAtTime,long interval PendingIntent operation) | 设置在某个时间重复执行闹钟,但不是间隔固定时间 |
AlarmManager的使用步骤
1)获得ALarmManager实例 ALarmManager am=(ALarmManager)getSystemService(ALARM_SERVICE);
2)定义一个PendingIntent发出广播
3)调用ALarmManager方法,设置定时或重复提醒
具体为:
MainActivity.java
[java] view plain copy
- package com.ex;
- import android.app.Activity;
- import android.app.AlarmManager;
- import android.app.PendingIntent;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class MainActivity extends Activity {
- private Button btn_set,btn_cancel;
- //定义广播Action
- private static final String BC_ACTION="com.ex.action.BC_ACTION";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //获得AlarManager实例
- final AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
- //intent
- Intent intent = new Intent();
- intent.setAction(BC_ACTION);
- intent.putExtra("msg", "该去图书馆啦!");
- //实例化PendingIntent
- final PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,intent,0);
- final long time = System.currentTimeMillis();
- btn_set = (Button)findViewById(R.id.setalarm);
- btn_set.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- //重复提示,从当前事件开始,间隔5秒
- am.setRepeating(AlarmManager.RTC_WAKEUP, time, 8*1000, pi);
- }
- });
- btn_cancel=(Button)findViewById(R.id.cancelalarm);
- btn_cancel.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- am.cancel(pi);
- }});
- }
- }
main.xml
[html] view plain copy
- <Button
- android:id="@+id/setalarm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="设置闹钟"
- />
- <Button
- android:id="@+id/cancelalarm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="取消闹钟"
- />
MyReceiver.java
[java] view plain copy
- package com.ex;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.widget.Toast;
- public class MyReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- //获得提示信息
- String msg=intent.getStringExtra("msg");
- Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
- }
- }
转载地址:http://blog.csdn.net/zengshuqin/article/details/7171248