android广播

《Android深入透析》之广播(Broadcast)

為{幸葍}努か 提交于 2019-12-01 16:45:19
1. 概述 在android中,Broadcast作为四大组件之一,被广泛的应用在android程序之间的数据传递。举一个大家都比较熟悉的例子来说明。在车上的时候大家都有收听广播的习惯,广播电台通过发送不同频率的信号,然后大家通过将各自频率调成和电台相同的频率,就可以接受到广播内容了。在android中的广播其实是和这个是一样的效果的。 2. 广播机制 android 中广播机制体现在方方面面,各种广播在android系统中运行,当系统、应用程序运行时便会向android注册各种广播,例如当开机完成后,系统会发送一条广播,接受到这条广播就能及时的作出提示和保存数据的动作;当你安装卸载应用程序的时候系统都会发送广播,来监听这条广播,就可以作出相应的动作,同样的广播还有很多,比如电量多少,短信,来电等等。 3. 发送和接收广播 3.1 广播定义 关于广播的定义,分为两种,动态注册和静态注册。 动态注册的广播接收器永远要快于静态注册的广播接收器,不管静态注册的广播接收器的优先级是否高于动态注册的广播接收器的优先级。 动态注册的广播不是常驻型的,他是跟随着activity的生命周期的。一般在开发中都会在 onDestroy() 方法中移除广播。静态注册的广播是常驻型的广播,也就是说当应用程序关闭的时候,如果有信息广播来,程序也会被系统调用。在同一优先级下,谁启动的快,谁将先收到广播。 3

BroadcastReceiver(广播接收者)

孤人 提交于 2019-12-01 14:00:35
BroadcastReceiver是Android系统的核心组件。 广播是一种通信机制,广播的发送方可以发出广播,而另一端可以使用接收者接收该广播,接收到了以后决定相应的处理。 发广播可以使用sendBroadcast(Intent intent)方法实现,该方法是由ContextWrapper定义的。 在发送广播时,需要在Intent对象中配置Action属性,类似于生活中的广播的“频道号” 广播的接收需要自定义类继承BroadcastReceiver来实现,该自定义类可以是内部类。 注册广播接收者可以在程序代码中进行注册,调用registerReceiver(BroadcastReceiver recevier, IntentFilter filter)即可实现注册,注册时,参数IntentFilter中应该通过addAction()方法添加所有需要接收的广播中Intent携带的Action属性。 发送广播: Intent it = new Intent(); it.setAction("cn.tedu.player.intent.action.PREVIOUS"); sendBroadcast(it); 接收广播: private class InnerBroadcastReceiver extends BroadcastReceiver { @Override public

Android中BroadcastReceiver的使用

点点圈 提交于 2019-11-30 20:02:53
1、Android中广播分为静态注册和动态注册 2、下面是一个简单静态注册的例子 创建一个继承 BroadcastReceiver 的子类 public class DeviceBootReceiver extends BroadcastReceiver { private static final String TAG = DeviceBootReceiver.class.getName(); @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "开机了:" + intent.getAction()); } } 该类的功能用于接收手机开机的广播。 在 AndroidManifest.xml 中注册该组件 <receiver android:name=".DeviceBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> action 标签中的值用于匹配广播的类型,这里是开机广播。 这样当手机开机时,便会收到来自系统的消息。 同样,我们也可以监听应用安装,应用卸装,USB插拔等系统广播。只是

四大组件之(四)广播接收器

人盡茶涼 提交于 2019-11-29 18:54:40
广播接收器 是一种用于响应系统范围广播通知的组件。 许多广播都是由系统发起的 — 例如,通知屏幕已关闭、电池电量不足或已拍摄照片的广播。应用也可以发起广播 — 例如,通知其他应用某些数据已下载至设备,并且可供其使用。 尽管广播接收器不会显示用户界面,但它们可以 创建状态栏通知 ,在发生广播事件时提醒用户。 但广播接收器更常见的用途只是作为通向其他组件的“通道”,设计用于执行极少量的工作。 例如,它可能会基于事件发起一项服务来执行某项工作。 广播接收器作为 BroadcastReceiver 的子类实现,并且每条广播都作为 Intent 对象进行传递。 如需了解详细信息,请参阅 BroadcastReceiver 类。 Android 系统设计的独特之处在于,任何应用都可以启动其他应用的组件。 例如,如果您想让用户使用设备的相机拍摄照片,很可能有另一个应用可以执行该操作,那么您的应用就可以利用该应用,而不是开发一个 Activity 来自行拍摄照片。 您不需要集成甚至链接到该相机应用的代码,而是只需启动拍摄照片的相机应用中的 Activity。 完成拍摄时,系统甚至会将照片返回您的应用,以便您使用。对用户而言,就好像相机真正是您应用的组成部分。 当系统启动某个组件时,会启动该应用的进程(如果尚未运行),并实例化该组件所需的类。 例如,如果您的应用启动相机应用中拍摄照片的

Android 中的BroadCastReceiver

不羁的心 提交于 2019-11-29 12:20:11
BroadCastReceiver 简介 (末尾有源码) BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastReceiver.java 广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用Context.sendBroadcast() 、 Context.sendOrderedBroadcast() 来实现的。通常一个广播 Intent 可以被订阅了此Intent 的多个广播接收者所接收。 广播是一种广泛运用的在 应用程序之间传输信息的机制 。而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件; 来自普通应用程序,如一个应用程序通知其他应用程序某些数据已经下载完毕。 BroadcastReceiver 自身并不实现图形用户界面,但是当它收到某个通知后, BroadcastReceiver 可以启动Activity 作为响应,或者通过 NotificationMananger 提醒用户,或者启动 Service 等等。 BroadCastReceiver 的机制 1. 机制 在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播

Android BroadcastReceiver详解

耗尽温柔 提交于 2019-11-28 20:12:23
通过广播的方式进行消息传递,其本质是一个全局的监听器,可以监听到各种广播,可以用来实现不同组件之间的通信。广播最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的,通过这样的形式来达到接、收双方的完全解耦合。 类别 普通广播(Normal Broadcast) 有序广播(Ordered Broadcast) 粘性广播(Sticky Broadcast) 系统广播(System Broadcast) 本地广播(Local Broadcast) 普通广播(Normal Broadcast) 又称无序广播,这种广播完全是异步的,所有与广播Intent匹配的BroadcastReceiver,都可以收到这条广播,并且不分先后顺序,视为同时收到,通过Context.sendBroadcast()方法发送。这种广播的效率比较高,但缺点是接收器不能将处理结果传递给下一个接收器,并且无法在中途终止广播。 Intent intent = new Intent(); //对应BroadcastReceiver中intentFilter的action intent.setAction("test"); //发送广播 sendBroadcast(intent); 有序广播(Ordered Broadcast) 这是一种同步执行的广播,通过Context

Android四大组件之BroadcastReceiver

ε祈祈猫儿з 提交于 2019-11-28 19:34:26
前言 Hi,大家好,又双见面啦,上一期我们讲了如何使用Activity,肯定有不少小伙伴已经创建了属于自己的FirstActivity,那么这一期我们主要为大家介绍第二个重要组件BroadcastReceiver(广播接收器)。作为Android的四大组件之二,其应用场景非常多。下面,就详细介绍下 BroadcastReceiver 的相关知识。 1. 定义 BroadcastReceiver(广播接收器)即广播,是一个全局的监听器。 Android 广播分为两个角色: 广播发送者 、 广播接受者 。 2. 作用 可以监听或接收应用 App 或系统发出的广播消息,并做出响应。 3. 应用场景 同一 App 内部的同一组件内的消息通信(单个或多个线程之间); 同一 App 内部的不同组件之间的消息通信(单个进程); 同一 App 具有多个进程的不同组件之间的消息通信; 不同 App 之间的组件之间消息通信; Android系统在特定情况下与App之间的消息通信,如:网络变化、电池电量、屏幕开关等。 4. 实现原理 Android中的广播使用了观察者模式:基于消息的发布 / 订阅事件模型,将广播的 发送者 和 接收者 解耦,使得系统方便集成,更易扩展。 消息的事件模型中有三个角色: 消息订阅者(广播接收者) 消息发布者(广播发送者) 消息中心(AMS,即Activity Manager

Android四大组件:BroadcastReceiver 介绍

為{幸葍}努か 提交于 2019-11-28 16:02:30
介绍 BroadcastReceiver 即广播组件,是 Android 的四大组件之一。 用于监听和接收广播消息,并做出响应 。有以下一些应用: 不同组件之间的通信(应用内或不同应用之间)。 多线程之间通信。 与系统在特定情况下(例如,电话呼入时、网络可用时)的通信。 原理 Android 中的广播机制使用了 观察者设计模式:基于消息的发布、订阅事件模型 。因此,广播的发送者和接收者解耦,使得系统方便集成,更容易扩展。 模型中有三个角色: 消息订阅者(广播接收者) 消息发布者(广播发送者) 消息中心( ActivityManagerService ) 整个模型过程如下: 广播接收者通过 Binder 机制在 AMS 中注册订阅广播。 广播发送者通过 Binder 机制向 AMS 发送广播。 AMS 根据广播发送者要求(IntentFilter、Permission),在已注册列表中寻找适合的接收者。 AMS 将广播发送到合适的广播接收者相应的消息循环队列中。 广播接收者通过消息循环拿到广播,并回调 onReceive() 方法。 注:广播发送者和接收者的执行是异步的,发送者不会关心有无接收者接收,也不确定接收者何时才能接收到。 使用 步骤1:自定义广播接收器 继承 BroadcastReceiver 基类,并复写抽象方法 onReceive() 。默认情况下

四大组件——广播

大憨熊 提交于 2019-11-27 16:41:08
分类 标准广播 同一时刻接收,不可以截断 有序广播 优先级高的先接收到广播,并且可以截断 注册方式 动态注册 在代码中注册 ps:只能是程序启动的时候接收广播 1.创建新类继承自 BroadcastReceiver,并重写父类的 onReceive()方法,用作接收广播时的逻辑处理方法体 class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "network changes", Toast.LENGTH_SHORT).show(); } } 2.接着在onCreate()中创建IntentFilter对象和BroadcastReceiver对象,调用方法registerReceiver() 广播注册 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); NetworkChangeReceiver networkChangeReceiver = new

android四大组件(详细总结)

帅比萌擦擦* 提交于 2019-11-27 07:08:48
android 四大组件分别为 activity 、 service 、 content provider 、 broadcast receiver 。 一、 android 四大组件详解 1 、 activity ( 1 )一个 Activity 通常就是一个单独的屏幕(窗口)。 ( 2 ) Activity 之间通过 Intent 进行通信。 ( 3 ) android 应用中每一个 Activity 都必须要在 AndroidManifest.xml 配置文件中声明,否则系统将不识别也不执行该 Activity 。 2 、 service ( 1 ) service 用于在 后台 完成用户指定的操作。 service 分为两种: ( a ) started (启动):当应用程序组件(如 activity )调用 startService() 方法启动服务时,服务处于 started 状态。 ( b ) bound (绑定):当应用程序组件调用 bindService() 方法绑定到服务时,服务处于 bound 状态。 (2)startService() 与 bindService() 区别: (a)started service (启动服务)是由其他组件调用 startService() 方法启动的,这导致服务的 onStartCommand() 方法被调用。当服务是