您的位置:首页 > 移动开发 > Android开发

AlarmManager的使用-----闹钟/定时提醒功能

2014-07-07 20:07 309 查看
AlarmManager----全局定时器
顾名思义就是“提醒”,是Android中常用的一种系统级别的提示服务;

AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent。
简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent

常用的三个方法:
set:此方法用于设置一次性闹钟
setRepeating():此方法用于设置重复闹钟
setInexactRepeating():用于设置重复闹钟

使用步骤:1.获取AlarmManager实例---》2.定义一个PendingIntent发出广播----》3.调用AlarmManager的方法,设设置定时或重复提醒;

1.AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

2.Intent intent = new Intent();
intent.setAction("xxx");
3.PendingIntent pendIntent = PendingIntent.getBroadcast();
//五秒后 alarm闹钟启动
4.alarmMgr.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+5*1000,pendIntent);

5.定义一个接收器 接收处理

效果图:



代码如下:

1.发起闹钟广播

package com.example.alarmmanagertest;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

private Button buttonStart,buttonStop;
private static final String BC_ACTION = "com.li.naozhong";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

buttonStart = (Button) findViewById(R.id.button1);
buttonStop = (Button) findViewById(R.id.button2);

//1.获取AlarmManager实例
final AlarmManager alam = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction(BC_ACTION);
intent.putExtra("msg", "到点了 开饭啦");
//2.定义一个PendingIntent 并发出广播
final PendingIntent pendIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);

//开启闹钟
buttonStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//五秒后发送广播 只发一次
long startTime = System.currentTimeMillis()+5*1000;
alam.set(AlarmManager.RTC_WAKEUP, startTime, pendIntent);
}
});

//取消闹钟
buttonStop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
alam.cancel(pendIntent);

}
});
}

}
2.接收器代码块
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class ShowNaoZhong extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
//获取提示信息
String msg = intent.getStringExtra("msg");
//显示信息
Log.i("Log", msg);
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}

}

注意:要在AndroidManifest.xml文件中注册接收器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android