文档章节

第88章、系统服务之NOTIFICATION_SERVICE服务(从零开始学Android)

simpower
 simpower
发布于 2014/09/01 10:15
字数 960
阅读 960
收藏 1

Notification通知将一个图标(包含一条可选的提示文本信息)填加到系统的状态栏(一般来说,Android手机的状态栏是在顶部,非底部,要注意噢)中,并将一条展开信息添加到通知窗口中。当用户选中展开信息时,Android将执行一个此通知已定义的意图Intent(通常用于弹出一个Activity)。你还可以对通知进行配置,用设备提供的声音、振动、闪光来提醒用户。

  当后台服务(Service)需要对某个事件发出提醒并且需要用户响应时,状态栏通知就能发挥作用了。后台服务从来不会启动Activity来接收用户的交互,取而代之的是应该创建一个状态栏通知,在用户点选后再由通知来启动Activity。

  Activity或者Service都能初始化一个状态栏通知。可因为Activity只有在活动状态并获得焦点时才能执行操作,所以在实际开发中使用Service来创建状态栏通知居多。这样,即使用户正在使用其他程序或者设备已经休眠时,仍然可以从后台创建通知。要创建一个通知,须用到两个类:Notification类和NotificationManager类。

  NotificationManager是一个Android系统服务,用于管理和运行所有通知。NotificationManager不能被实例化,为了把Notification传给它,你可以用getSystemService()方法获取一个NotificationManager的引用。在需要通知用户时再调用notify()方法将Notification对象传给它。

   创建Notivication通知步骤:

  (1)获取NotificationManager的引用

[java] view plaincopy

  1. NotificationManager notificationManager=(NotificationManager)  

  2.                     super.getSystemService(Context.NOTIFICATION_SERVICE);  

  (2)实例化Notification

[java] view plaincopy

  1.        Notification notification=new Notification(  

  2. R.drawable.ic_launcher,  

  3. "Notification消息提示!",  

  4. System.currentTimeMillis());  

  (3)指定通知的展开信息和Intent

[java] view plaincopy

  1.        PendingIntent intent=PendingIntent.getActivity(  

  2. this,   

  3. 0,   

  4. super.getIntent(),   

  5. PendingIntent.FLAG_UPDATE_CURRENT);  

  6.   

  7. tification.setLatestEventInfo(  

  8. this,   

  9. "跟我学Android",  

  10. "跟我学编程:www.genwoxue.com",  

  11. intent);  



  (4)将Notification对象传给NotificationManager

[java] view plaincopy

  1.        notificationManager.notify(  

  2. "Genwoxue",  

  3. R.drawable.ic_launcher,  

  4. notification);  

  如果想要发送状态栏通知,通过notify(int, Notification)传递Notification对象给NotificationManager即可。第一个参数是Notification 的唯一ID,第二个参数是Notification对象。ID在整个应用程序范围内唯一标识Notification。应用程序可能管理着多种不同的通知,在用户通过各自定义的Intent返回应用程序时必须能选择正确的动作执行之,因此上述参数是必需的。


一、设计界面

  1、布局文件

  打开res/layout/activity_main.xml文件。
  输入以下代码:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout   

  3.     xmlns:android="http://schemas.android.com/apk/res/android"  

  4.     android:layout_width="match_parent"  

  5.     android:layout_height="match_parent"  

  6.     android:orientation="vertical" >  

  7.   

  8.     <TextView  

  9.         android:id="@+id/notifi"  

  10.         android:layout_width="wrap_content"  

  11.         android:layout_height="wrap_content"  

  12.         android:text="Notification通知将一个图标(包含一条可选的提示文本信息)填加到系统的状态栏(一般来说,Android手机的状态栏是在顶部,非底部,要注意噢)中,并将一条展开信息添加到通知窗口中。当用户选中展开信息时,Android将执行一个此通知已定义的意图Intent(通常用于弹出一个Activity)。你还可以对通知进行配置,用设备提供的声音、振动、闪光来提醒用户。  

  13. />  

  14.   

  15. </LinearLayout>  


二、程序文件

  打开“src/com.genwoxue.notification/MainActivity.java”文件。
  然后输入以下代码:

[java] view plaincopy

  1. package com.genwoxue.notification;  

  2.   

  3.   

  4. import android.os.Bundle;  

  5. import android.app.Activity;  

  6. import android.app.Notification;  

  7. import android.app.NotificationManager;  

  8. import android.app.PendingIntent;  

  9. import android.content.Context;  

  10.   

  11. public class MainActivity extends Activity {  

  12.   

  13.       

  14.       

  15.     @Override  

  16.     protected void onCreate(Bundle savedInstanceState) {  

  17.         super.onCreate(savedInstanceState);  

  18.         setContentView(R.layout.activity_main);  

  19.           

  20.         NotificationManager notificationManager=(NotificationManager)super.getSystemService(Context.NOTIFICATION_SERVICE);  

  21.         Notification notification=new Notification(  

  22.                 R.drawable.ic_launcher,  

  23.                 "Notification消息提示!",  

  24.                 System.currentTimeMillis());  

  25.           

  26.         PendingIntent intent=PendingIntent.getActivity(  

  27.                 this,   

  28.                 0,   

  29.                 super.getIntent(),   

  30.                 PendingIntent.FLAG_UPDATE_CURRENT);  

  31.           

  32.         notification.setLatestEventInfo(  

  33.                 this,   

  34.                 "跟我学Android",  

  35.                 "跟我学编程:www.genwoxue.com",  

  36.                 intent);  

  37.           

  38.         notificationManager.notify(  

  39.                 "Genwoxue",  

  40.                 R.drawable.ic_launcher,  

  41.                 notification);    

  42.     }  

  43. }  

三、配置文件

  没有特殊权限要求,使用默认“AndroidManifest.xml”配置文件即可。

四、运行结果

   

  

 
参考文章:

  android Notification 的使用

  Android中Notification服务开发


本文转载自:http://blog.csdn.net/jianghuiquan/article/details/8641130

simpower
粉丝 29
博文 704
码字总数 53364
作品 0
海淀
程序员
私信 提问
《Android/OPhone 开发完全讲义》样章和目录下载

《Android/OPhone 开发完全讲义》一书预计在6-15左右出版,现提供3个样章(第1、8和14章)试读,欢迎提出宝贵意见。 内 容简介 本书近500页,共25章,分为5篇,超过200个完整的例子、超过2万...

小编辑
2010/06/02
1K
1
Android Service被系统回收的解决方法

自己的app的service总是容易被系统回收,搜罗了一下,基本上的解决思路有以下几种: 1.把service写成系统服务,将不会被回收(未实践): 在Manifest.xml文件中设置persistent属性为true,则可...

亭子happy
2013/10/17
610
0
Android开发权威指南(第2版)新书发布

《Android开发权威指南(第二版)》是畅销书《Android开发权威指南》的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45章精彩内容供读者学习。  《Android开发权威指...

androidguy
2018/06/29
0
0
android service被系统回收的解决方法

android service被系统回收的解决方法 博客分类: Android开发 androidservicekill 自己的app的service总是容易被系统回收,搜罗了一下,基本上的解决思路有以下几种: 1.把service写成系统服...

zhouw
2014/03/29
3K
0
Android之Service

1、Service的种类 按运行地点分类: 类别 区别 优点 缺点 应用 本地服务(Local) 该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务...

daveztong
2012/11/23
191
1

没有更多内容

加载失败,请刷新页面

加载更多

Go 每日一库之 viper

简介 上一篇文章介绍 cobra 的时候提到了 viper,今天我们就来介绍一下这个库。 viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的...

darjunlee
35分钟前
44
0
Raspberry Pi 树莓派 搭建java8环境

更新软件源 apt-get upgradeapt-get update 移除自带的openjdk(如果有的话) apt-get remove openjdk* 安装oracle jdk,地址: https://www.oracle.com/technetwork/java/javase/downl......

ChangeZ
今天
139
0
树莓派3b 安装openwrt

https://downloads.openwrt.org/releases/19.07.0/targets/brcm2708/bcm2710/openwrt-19.07.0-brcm2708-bcm2710-rpi-3-squashfs-factory.img.gz 插入并启动树莓派3B+,顺便接上键盘和显示器,......

FalconChen
今天
191
0
OSChina 周一乱弹 —— 有些运动也常用到膝盖

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《火宵の月・テーマ~ピアノソロ》- 中村由利子 手机党少年们想听歌,请使劲儿戳(...

小小编辑
今天
2.7K
11
Redis持久化机制

RDB存储 RDB方式的持久化是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据生成一份副本并存储在硬盘上。 Redis会在一下集中情况下对数据进行快照: 根据配置规则进行快照;...

XuePeng77
今天
219
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部