天天看点

AlarmManager的使用

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

  1. package com.ex;  
  2. import android.app.Activity;  
  3. import android.app.AlarmManager;  
  4. import android.app.PendingIntent;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10. public class MainActivity extends Activity {  
  11.     private Button btn_set,btn_cancel;  
  12.     //定义广播Action  
  13.     private static final String BC_ACTION="com.ex.action.BC_ACTION";  
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.main);  
  18.         //获得AlarManager实例  
  19.         final AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);  
  20.         //intent  
  21.         Intent intent = new Intent();  
  22.         intent.setAction(BC_ACTION);  
  23.         intent.putExtra("msg", "该去图书馆啦!");  
  24.         //实例化PendingIntent  
  25.         final PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,intent,0);   
  26.         final long time = System.currentTimeMillis();  
  27.         btn_set = (Button)findViewById(R.id.setalarm);  
  28.         btn_set.setOnClickListener(new OnClickListener(){  
  29.             @Override  
  30.             public void onClick(View v) {  
  31.                 //重复提示,从当前事件开始,间隔5秒  
  32.                 am.setRepeating(AlarmManager.RTC_WAKEUP, time, 8*1000, pi);  
  33.             }  
  34.         });  
  35.         btn_cancel=(Button)findViewById(R.id.cancelalarm);  
  36.         btn_cancel.setOnClickListener(new OnClickListener(){  
  37.             @Override  
  38.             public void onClick(View v) {  
  39.                 am.cancel(pi);  
  40.             }});  
  41.     }  
  42. }  

main.xml

[html]  view plain copy

  1. <Button  
  2.     android:id="@+id/setalarm"    
  3.     android:layout_width="wrap_content"   
  4.     android:layout_height="wrap_content"   
  5.     android:text="设置闹钟"  
  6.     />  
  7.     <Button  
  8.     android:id="@+id/cancelalarm"    
  9.     android:layout_width="wrap_content"   
  10.     android:layout_height="wrap_content"   
  11.     android:text="取消闹钟"  
  12.     />  

MyReceiver.java

[java]  view plain copy

  1. package com.ex;  
  2. import android.content.BroadcastReceiver;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. import android.widget.Toast;  
  6. public class MyReceiver extends BroadcastReceiver {  
  7.     @Override  
  8.     public void onReceive(Context context, Intent intent) {  
  9.         // TODO Auto-generated method stub  
  10.         //获得提示信息  
  11.         String msg=intent.getStringExtra("msg");  
  12.         Toast.makeText(context, msg, Toast.LENGTH_LONG).show();  
  13.     }  
  14. }  

转载地址:http://blog.csdn.net/zengshuqin/article/details/7171248