现在的位置: 首页 > 综合 > 正文

Android学习笔记10:状态通知栏 Notification

2013年10月22日 ⁄ 综合 ⁄ 共 1871字 ⁄ 字号 评论关闭

1.  NotificationManager 和 Notification

           在Android系统中,发一个状态栏通知还是很方便的。下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 

首先,发送一个状态栏通知必须用到两个类:NotificationManager、Notification。 
NotificationManager:是状态栏通知的管理类,负责发通知、清楚通知等。 
NotificationManager是一个系统Service,必须通过getSystemService()方法来获取。 
NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

Notification:是具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。

 2. 用法 :

         第一步 创建 NotificationManager     

     NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

    第二步 设置Notification

//新建状态栏通知 
baseNF=newNotification(); 
//设置通知在状态栏显示的图标 
baseNF.icon=R.drawable.icon; 
//通知时在状态栏显示的内容 
baseNF.tickerText="YouclickedBaseNF!"; 
//通知的默认参数DEFAULT_SOUND,DEFAULT_VIBRATE,DEFAULT_LIGHTS. 
//如果要全部采用默认值,用DEFAULT_ALL. 
//此处采用默认声音 
baseNF.defaults=Notification.DEFAULT_SOUND; 
//第二个参数:下拉状态栏时显示的消息标题expandedmessagetitle 
//第三个参数:下拉状态栏时显示的消息内容expandedmessagetext 
//第四个参数:点击该通知时执行页面跳转 
baseNF.setLatestEventInfo(Lesson_10.this,"Title01","Content01",pd); 

其中 pd 是一个pendingIntent,它是怎么来的 :

                //点击通知时转移内容
m_Intent = new Intent(Activity01.this, Activity02.class);
//主要是设置点击通知时显示内容的类
m_PendingIntent = PendingIntent.getActivity(Activity01.this, 0, m_Intent, 0);

第三步  发出状态栏通知
nm.notify(Notification_ID_BASE,baseNF);

3. intnet 和 pendingIntent

            intent英文意思是意图,pending表示即将发生或来临的事情。 
PendingIntent这个类用于处理即将发生的事情。比如在通知Notification中用于跳转页面,但不是马上跳转。 

Intent 是及时启动,intent 随所在的activity 消失而消失。 
PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent的。正由于pendingintent中
保存有当前App的Context,使它赋予外部App一种能力,使得外部App可以如同当前App一样的执行pendingintent里的 Intent, 就算在执行时当前App已经不存在了,也能通过存在pendingintent里的Context照样执行Intent。另外还可以处理intent执行后的操作。常和alermanger 和notificationmanager一起使用。 

Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据,而Pendingintent,一般用在 Notification上,可以理解为延迟执行的intent,PendingIntent是对Intent一个包装。

抱歉!评论已关闭.