`

android 之 广播相关

 
阅读更多
感谢:http://www.devdiv.com/home.php?mod=space&uid=14682&do=blog&id=3776

在android中,通过广播(broadcast)可以通知其他广播接受者某个事件发生了。比如电源强度,信号强度等。
Broadcast机制是基于一种注册方式的,Broadcast Receiver将其特征描述并注册在系统中。根据注册时机,可以分为两类,网上有人称之为静态注册和动态注册。
静态注册,就是Broadcast Receiver的相关信息写在配置文件中,系统会负责在相关事件发生的时候及时通知到该Broadcast Receiver。这种模式适合于这样的场景:某事件发生
-> 通知Broadcast -> 启动相关处理应用。比如,监听来电、邮件、短信之类的,都隶
属于这种模式。 这个方式实现如下:
(1)接收广播
Public class MyBroadcastReceiver extends BroadcastReceiver {
 Public void onReceive(Context context, Intene intent){
 // TODO
}

(2)发送广播
 Intent it = new Intent(NEW_BROADCAST_FILTER);
 sendBroadcast(it);


(3)配置广播
在receiver的action中定义了该receiver能够接受的广播,Manifest.xml定义部分:
<receiver android:name=”.MyBroadcastReceiver”>
 <intent-filter>
<action android:name= NEW_BROADCAST_FILTER />
</intent-filter>
</receiver>


    动态注册,注册这样的事情都是由应用自己来处理的,通常是在OnResume事
件中通过registerReceiver进行注册,在OnPause等事件中通过unregisterReceiver取消注
册,通过这种方式使其能够在运行期间保持对相关事件的关注。比如,判断网络变化,有些应用会在运行期间关注网络状况变化的需求,使其可以在有网络的时候优先使用网络,在其他情况下,首先通过本地数据。而这样的监听,只需要在其工作状态下保持就好,不运行的时候,管你是天大的网路变化,与我何干。其模式可以归结为:启动应用 -> 监听事件 -> 发生时进行处理。 动态注册广播方式如下:
(1)声明一个BroadcastReceiver
BroadcastReceiver mReceiver=new BroadcastReceiver(){
Public void onReceive(Context context,Intent intent){
 //收到Broadcast会跑到这里
         }
}

(2)  OnResume时,通过registerReceiver注册。
IntentFilter mfilter=new IntentFilter();
mfilter.addAction(NEW_BROADCAST_FILTER);
registerReceiver(mReceiver,mfilter);

(3)OnPause时,通过unregisterReceiver反注册。
unregisterReceiver(mReceiver);

android中发送广播有两种方式,Context.sendBroadcast和Context.sendOrderedBroadcast,前者发出的称为Normal broadcast,所有关注该消息的Receiver,都有机会获得并进行处理;后者放出的称作Ordered broadcasts,顾名思义,接受者需要按资排辈,排在后面的能否收到广播,需要看前面的处理方式,如果前面的Receiver阻止了这个消息继续广播,排在后面的就不会在接收到这个广播,短信广播就是Ordered broadcasts。
<receiver android:name=".SmsReceiver">
       <intent-filter android:priority="1999">
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
        </intent-filter>
</receiver>

Ordered broadcasts根据priority值确定优先级,值越大优先级越高,如果你的短信程序中priority最大,接收到短息广播后阻止了其继续广播,就达到了拦截短信的效果。
最后需要注意的是,当Broadcast Receiver接收到相关的消息,在OnReceive中不要执行很消耗时间(通常不大于5秒)的操作,通常把消耗时间的操作放到一个Service中,在OnReceive中启动该Service。
分享到:
评论

相关推荐

    Android蓝牙广播通信

    本文将深入探讨Android系统如何利用广播通信来连接蓝牙设备。 首先,我们需要了解Android中的蓝牙API。Android提供了一个名为BluetoothAdapter的类,它是Android蓝牙功能的主要入口点。通过这个类,我们可以检查...

    Android 本地广播示例

    在Android开发中,广播是一种非常重要的组件,用于在应用程序之间传递消息。本地广播(Local Broadcast)是广播机制的一个子集,它只限于在应用程序内部通信,不涉及到系统全局的广播接收者。本地广播相比全局广播...

    Android利用蓝牙广播数据

    本文将深入探讨如何在Android设备上利用蓝牙广播数据,以及这种技术在Android与可穿戴设备之间的通信应用。 首先,我们需要理解蓝牙广播(Bluetooth Advertising)的概念。在蓝牙低功耗(Bluetooth Low Energy, BLE...

    Android广播onReceiver回调更新ui

    总结来说,"Android广播onReceiver回调更新ui"主要关注的是如何在广播接收器接收到广播时,通过合适的机制在用户界面上展示相关信息。在实际开发中,这涉及到对Android广播机制的理解、广播接收器的注册与管理、...

    Android 利用广播发送通知

    在Android开发中,广播(Broadcast)是一种非常重要的组件,它允许应用程序之间进行异步通信,无需两者之间有明确的依赖关系。"Android 利用广播发送通知"的标题揭示了我们要探讨的核心技术:如何利用广播机制来触发...

    Android静态广播的例子

    在这个例子中,我们关注的是"Android静态广播",这是Android广播机制的一个子类,它与动态广播相对。静态广播通过在AndroidManifest.xml文件中声明来注册,而动态广播则在运行时通过代码注册。 首先,让我们深入...

    android广播时间处理机制

    5. 注意事项:Android O及以上版本对后台服务和广播有更严格的限制,非显式广播(即不在`AndroidManifest.xml`中声明的)在后台运行时可能不会被接收。因此,对于重要的广播事件,建议使用有序广播(Ordered ...

    Android动态广播的例子

    在Android系统中,广播是一种非常重要的组件,它允许应用程序之间进行通信,即使它们在后台运行或者并未启动。这里我们将深入探讨动态广播的概念,以及如何在实际项目中运用它。 动态广播是在程序运行时注册的,与...

    Android 利用广播监听usb连接状态(变化情况)

    在Android开发中,监听USB连接状态是一个常见需求,尤其是在涉及到需要与USB设备通信的应用场景...这是Android系统提供的功能之一,旨在为开发者提供更多控制和交互的可能性,以便更好地开发出符合用户需求的应用程序。

    Android实现静态广播监听器的方法

    在Android开发中,广播是一种非常重要的组件,它允许应用程序之间进行异步通信,即使它们并未在运行。静态广播监听器是Android系统中用于接收广播的一种方式,与动态注册的广播接收器相比,静态注册的监听器在应用...

    Android局域网UDP广播通信

    【Android局域网UDP广播通信】是Android应用开发中的一个重要技术点,主要涉及网络编程、多播技术以及Android系统的权限管理。在这个场景中,应用程序利用UDP(User Datagram Protocol)协议,通过局域网进行数据...

    android 跨应用程序广播发送接受

    在Android系统中,跨应用程序广播(Cross-App Broadcasting)是一种通信机制,允许应用程序之间传递消息,无需知道接收方确切的身份。这种机制对于组件间的解耦合以及系统事件的全局通知非常有用。本篇文章将深入...

    Android Studio—自定义广播.zip

    在 Android Studio 中,我们可以方便地创建新的广播接收器类,并利用其强大的代码补全功能快速编写相关代码。`build.gradle` 文件用于管理项目构建配置,`gradlew` 和 `gradlew.bat` 用于执行 Gradle 命令,`...

    android开发 广播实现Activity

    在Android开发中,广播(Broadcast)是一种非常重要的组件,它允许应用程序之间进行异步通信,无需两者之间有明确的依赖关系。在这个“android开发 广播实现Activity”中,我们将探讨如何利用广播来实现在不同...

    Android利用广播实现耳机的线控

    在Android系统中,耳机线控功能的实现是一个重要的...通过以上步骤,我们可以成功地利用Android的广播机制实现耳机线控功能,包括单击和双击事件的识别。在实际项目中,可以根据具体需求对这些基础操作进行扩展和定制。

    Android 常用系统广播

    Android系统广播是Android应用开发中一种重要的机制,它允许应用程序接收系统发送的事件通知。这些事件可以是硬件变化、系统状态变化或者用户的某些操作等。以下是根据提供的文件内容整理的Android常用系统广播知识...

    android系统广播

    Android 系统广播大全 Android 系统广播是 Android 操作系统中的一种机制,用于在应用程序之间进行通信和交互。它允许不同的应用程序和系统组件之间进行通信,实现了数据的共享和交互。 Android 系统广播大全涵盖了...

    android广播小例子

    在这个"android广播小例子"中,我们将探讨如何创建和使用广播接收器。 首先,我们需要在AndroidManifest.xml文件中注册我们的广播接收器。注册分为静态注册和动态注册两种方式。静态注册是在manifest文件中添加标签...

    Android通过广播实现强制下线功能

    首先,我们需要了解Android广播系统的基本原理。在Android中,广播是一种全局的消息传递机制,允许应用程序之间进行通信,即使它们之间没有直接的依赖关系。系统会发送广播意图(Intent),而感兴趣的接收者可以通过...

Global site tag (gtag.js) - Google Analytics