`

Android的全局通知机制

阅读更多

Android的全局通知机制

Android提醒主要有2种形式:Toast和状态栏通知。

Toast,弹出式通知,临时弹出的通知界面,不会阻塞用户正在进行的交互,仅仅在界面上停留一段时间自动消失。常用于提供一些反馈消息。

另一种方式是状态栏通知。所有的通知都会以图标的形式在状态栏显示,用户可以通过通知栏上下拉,看到一份完整的状态栏通知列表,其中包含了各个状态栏通知的内容,并可与之做一定的交互。

 

“基于全局”的意思是:所有的通知项都有Android统一调度,控制其生命周期和样式。Android有一个通知服务NotificationManagerService,运行在核心进程的独立线程,当开发者发出一个Toast通知,会加入到通知服务的Toast队列中,在每个队列中的Toast通知都会按照先后顺序逐一呈现,每个Toast可以预设显示时间,消失后,下一个Toast显示。

当状态栏通知被提交到通知服务中,通知服务会在已有的状态栏通知列表中查询是否存在于提交的通知具有相同标识的通知项,今儿进行更新、替换或者新建。

 

Toast使用

Toast类。

Toast.makeText将带有文字信息的Toast呈现在用户面前。

Toast.setgravity修改文本的展示效果,如位置信息

Toast.show展示

Toast.setDuration设置展示时间

Toast.setView(layout):自定义样式,图文形式

 

状态栏通知

状态栏通知要复杂。首先,交互界面样式复杂,具有丰富的图标和内容。其次,状态栏通知要绑定相关的事件,使用户可以与之交互,对通知内容作进一步处理。再次,状态栏通知的生命周期复杂,有多重控制模式。

状态栏交互界面由状态栏界面(图标和文字)+列表栏界面(下拉通知列表中的通知项界面)组成。使用Notification对象,可以设置这2部分的交互界面。

//初始化状态栏显示的文字和图标

Notification notification = new Notification(R.drawable.X , R.string.X , time);

//设置下拉通知栏会显示的文字信息

Notification.setLatestEventInfo(context, R.string.Xtitle, R.string.Xcontent, createPending Intent());

 

Andriod 3.0提供了Builder类,通过Notification.Builder更清晰的构建状态栏通知对象:

Notification notification =new Notification.Builder(context)

.setTicker(R.string.status_bar_notification)

.setSmallIcon(R.drawable.X)

.setContentTitle(R.string.Xtitile)

.setContentText(R.string.Xcontent)

.setContentIntent(createPending Intent())

.getNocitifaction();

 

状态栏的构造者和展示者隶属于不同的应用,需要RemoteView定制交互界面。Notification.contentView=(RemoteView) contentView

 

Android中,开发者还可以为状态栏设置闪烁(Flash LED)、震动(Vibrate)、提示音(alert sound)进一步增强提示效果。

 

状态栏的通知事件有PendingIntent实现,并绑定到通知项的异步触发。发状态栏通知需要NotificationManager.notify,他会将请求发送到NotificationManagerService

分享到:
评论

相关推荐

    android全局事件监听器

    标题中的"android全局事件监听器"指的是一个实现此类功能的组件或框架。描述提到这个监听器“没有用任何的第三方库”,这意味着它是通过自定义实现来达到全局监听的目的,这通常会涉及到Android的广播接收器、观察者...

    全局下拉view.zip

    在Android开发中,全局下拉View是一种常见的交互设计,它借鉴了手机通知栏的下拉效果,使得用户可以在任何界面中触发一个特定的功能或者展示一些信息。这种设计为用户提供了一种便捷的操作方式,增强了用户体验。...

    android全局异常处理

    "android全局异常处理"这个主题关注的就是如何在整个Android应用中设置一个统一的错误处理机制,以便在发生异常时进行记录、通知用户或采取其他必要的恢复措施。 首先,我们需要理解Android应用中的异常类型。在...

    android全局对话框dhk.rar

    在给定的"android全局对话框dhk.rar"压缩包中,可能包含了一个实现全局对话框功能的库或示例代码,具体文件名为"dhk"。 要创建一个全局对话框,你需要理解以下关键知识点: 1. **DialogFragment**:Android提供了...

    Android_广播通知机制r.pdf

    【Android 广播通知机制详解】 在Android操作系统中,广播是一种重要的组件,它允许应用程序之间进行异步通信,即便它们并未直接相互交互。广播通知机制是Android系统中一种事件驱动的通信方式,允许开发者在系统...

    Android Broadcast 广播机制 实例

    Broadcast广播是Android系统中的一种全局通知机制,用于在整个系统中传播事件。当一个Broadcast被发送时,所有注册了与该Broadcast匹配的BroadcastReceiver(广播接收器)都会收到这个消息,并可以执行相应的处理...

    android广播时间处理机制

    总之,Android的广播时间处理机制是系统事件响应的重要组成部分,通过BroadcastReceiver可以监听和处理各种系统事件,包括自定义事件和系统预定义事件。理解并熟练掌握这一机制对于Android应用开发至关重要。

    Android broadcast广播机制的使用

    Android广播是系统用于在整个应用环境中发送全局通知的方式。这些通知可以是系统级别的,如设备启动、网络状态变化,也可以是应用级别的,如应用数据的更新。广播接收者(BroadcastReceiver)是接收这些广播的组件,...

    实现广播通知到通知栏

    Broadcast是Android系统中的一种全局事件发布机制,当某个事件发生时(例如网络状态改变、设备开机等),系统会发送一个广播Intent,所有注册了与该Intent匹配的BroadcastReceiver都可以接收到这个消息。 ...

    Android通知(状态栏/最小化)

    "Android通知(状态栏/最小化)"这个主题主要涉及到如何利用Android的通知机制实现类似于Windows操作系统中的最小化功能,即将Activity收入状态栏并显示一个小图标,用户可以通过点击状态栏图标来恢复Activity。...

    Android中利用App实现消息推送机制

    在 AndroidManifest.xml 文件中,我们可以使用 `android:process` 属性来指定服务的进程名,如果以 "." 开头,则为此服务开启一个全局的独立进程,如果以 ":" 开头,则为此服务开启一个为此应用私有的独立进程。...

    Android 本地广播示例

    广播是Android中的一个事件驱动机制,允许应用在特定事件发生时通知其他应用或应用组件。例如,当设备连接到电源时,系统会发送一个广播,允许任何注册了相应接收器的应用接收到这个通知。 2. **本地广播与全局...

    Android全局获取Context实例详解

    Android全局获取Context实例详解 Android全局获取Context实例是Android开发中一个常见的问题。Context是Android中一个非常重要的概念,它提供了访问应用程序级别的资源和服务的能力。获取Context实例是非常必要的,...

    Android之简单的登录界面的实现、使用 AlertDialog和全局广播实现被强制下线功能、自定义一个带有清除按钮的EditText

    3. **全局广播实现被强制下线功能**:全局广播是Android系统的一种通信机制,可以跨进程传递消息。当服务器通知用户需要强制下线时,可以通过发送一个全局广播来接收此信息。首先,注册一个BroadcastReceiver来监听...

    Android基础 BoradcaseReceiver和通知

    在Android系统中,BroadcastReceiver(广播接收者)和通知是两个关键的概念,它们构成了应用程序与系统及其它应用间通信的重要机制。BroadcastReceiver允许程序在后台接收并处理系统或自定义广播事件,而通知则用于...

    Android+Intent机制实例详解[文].pdf

    Broadcast Intent是Android系统中一种全局的通知机制,允许应用在任何时候向系统广播一个消息,所有注册了相应BroadcastReceiver的组件都可以接收到这个消息,无论它们是否当前处于运行状态。 理解Intent的关键在于...

    全局异常捕获,并保存在本地

    全局异常捕获是软件开发中的一个关键环节,它旨在确保应用程序在遇到未预期错误或异常时,仍能提供一定程度的...通过有效的异常管理和报告机制,开发者可以更迅速地发现并解决潜在问题,从而提升软件的稳定性和可靠性。

    环信全局消息监听(后台进程存在,就能收到消息)

    2. **通知机制**:不在聊天界面时,通过状态栏或其他方式通知用户收到了新消息。 3. **消息处理**:根据消息类型(如普通文本消息、命令消息等)进行相应的逻辑处理。 #### 三、代码实现 下面是一段示例代码,展示...

Global site tag (gtag.js) - Google Analytics