MyException - 我的异常网
当前位置:我的异常网» 移动开发 » 基于时间的提示AlarmManager和Service

基于时间的提示AlarmManager和Service

www.MyException.Cn  网友分享于:2013-07-19  浏览:249次
基于时间的提醒AlarmManager和Service

作为最贴身的电子移动设备,手机上的提醒功能无疑是最实用的了.Android中Notification简单易用,接下来就是对两种常用用法的介绍.

基于时间的提醒:
Notification本身没有管理时间的能力,所以我们用AlarmManager来触发Notification.

package test.TestNotification;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
/**
* 用AlarmManager来触发Notification
*/
public class TestNotification extends Activity
{
/**
* 初始化
*/
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到使用AlarmManager的权限
AlarmManager alarms=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
//AlarmManager要做的事情,打开NotificationService(这是个自定义Service稍后会补充)
Intent intent=new Intent(this,NotificationService.class);
PendingIntent pendingIntent=PendingIntent.getService(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
//设定时间,将System.currentTimeMillis()换成你需要的时间即可,这里是立即触发
alarms.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),pendingIntent);
}
}

在前面我们使用了Service来触发Notification,所以接下来自定义一个Service.

package test.TestNotification;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
/**
* 自定义Service,在其中启动Notification
*/
public class NotificationService extends Service
{
/**
* 继承Service必须实现的方法,这里用不到
*/
public IBinder onBind(Intent intent)
{
return null;
}
/**
* 初始化
*/
public void onCreate()
{
//以下是对Notification的各种参数设定
int icon=R.drawable.icon;
String tickerText=”这是一个提醒”;
long when=(System.currentTimeMillis());
Notification nfc=new Notification(icon,tickerText,when);
Context cxt=getApplicationContext();
String expandedTitle=”基于时间的提醒来了”;
String expandedText=”其实没什么重要的事”;
//intent是非常重要的参数,用来启动你实际想做的事情,设为null后点击状态栏上的Notification就没有任何反应了.
Intent intent=null;
PendingIntent nfcIntent=PendingIntent.getActivity(cxt,0,intent,0);
nfc.setLatestEventInfo(cxt,expandedTitle,expandedText,nfcIntent);
//发送Notification
NotificationManager nfcManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
nfcManager.notify(1,nfc);
}
}

这样,一个简单的定时提醒就完成了.
只要在应用中获得正确的时间,通过AlarmManager在那个时间点触发Service中的Notification,再用Notification启动相应的应用即可.
注意:AndroidManifest.xml中要添加上用到的NotificationService.(以上代码在Android2.2中测试通过)

转:http://www.freeideastudio.com.cn/wordpress/?p=329

 

文章评论

团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员应该关注的一些事儿
程序员应该关注的一些事儿
编程语言是女人
编程语言是女人
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
旅行,写作,编程
旅行,写作,编程
Java程序员必看电影
Java程序员必看电影
鲜为人知的编程真相
鲜为人知的编程真相
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
每天工作4小时的程序员
每天工作4小时的程序员
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员和编码员之间的区别
程序员和编码员之间的区别
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
一个程序员的时间管理
一个程序员的时间管理
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
漫画:程序员的工作
漫画:程序员的工作
老程序员的下场
老程序员的下场
总结2014中国互联网十大段子
总结2014中国互联网十大段子
如何成为一名黑客
如何成为一名黑客
中美印日四国程序员比较
中美印日四国程序员比较
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我的丈夫是个程序员
我的丈夫是个程序员
代码女神横空出世
代码女神横空出世
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
10个调试和排错的小建议
10个调试和排错的小建议
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
 程序员的样子
程序员的样子
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员的鄙视链
程序员的鄙视链
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
那些争议最大的编程观点
那些争议最大的编程观点
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有