Android BroadcastReceiver

  1. Broadcast Receiver:接听用户程序或系统程序所发出的broadcast intent,属于系统级别的监听器,拥有自己的进程,可以使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息,在应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。匹配Intent的BroadcastReceiver都可能被启动
  2. 事件广播要构建Intent然后调用sendBroadcast()方法将广播发出,事件的接收是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖起onReceiver(Context,Intent)方法,在该方法中响应事件,如果该方法10秒内没有完成,系统会认为程序无响应,该方法执行完BroadcastReceiver实例就会被销毁,Android系统中定义了很多标准的Broadcast Action来响应系统广播事件
  3. 广播接收器既可以在AndroidManifest中注册也可以通过代码方式来注册,一般我们是在Activity.onResume()方法中使用Context.registerReceiver(BroadcastReceiver,IntentFilter)方法来注册一个广播接收器(IntentFilter.setPriority可以设置receiver的优先级),在Activity.onPause中使用unregisterReceiver方法来注销一个广播接收器
  4. 两种注册广播方式的区别:
    • 动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低
    • 动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。
    • 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
  5. 由于BroadcastReceiver是一种全局监听器,因此可以利用来进行不同组件的通信,通过在组件中定义内部BroadcastReceiver类,接收其他组件的广播信息
  6. 发送广播:Context.sendBroadcast(Intent)会启动Intent参数对应的BroadcastReceiver Notification和NotificationManager用来实现可视化的信息显示
  7. Broadcast被分为两种:
    • 普通广播:完全异步,可以再同一时刻(逻辑上)被所有接受者收到,传递效率高,但是接受者不能把处理结果返回给下一个接受者,而且无法终止Broadcast intent的传播。sendBoardcast()发送普通广播
    • 有序广播:接收者将按照预先声明的优先级依次调用onReceiver()方法接收Broadcast,优先级声明在<intent-filter>元素的android:priority属性中或者调用IntentFilter.setPriority进行设置,数值越大优先级越高,有序广播可以调用abortBroadcast()终止intent的传播,也可以把自己的数据通过setResultExtras(Bundle)方法传给下一个接受者,sendOrderedBroadcast()发送有序广播
  8. AlarmManager:用来实现闹钟,提供了一种系统级的提示服务,允许安排在将来的某个时间执行一个服务
  9. AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);
时间: 2024-10-21 20:34:18

Android BroadcastReceiver的相关文章

39.Android BroadcastReceiver

39.Android BroadcastReceiver Android BroadcastReceiver Android BroadcastReceiver 介绍 Android BroadcastReceiver 功能 Android BroadcastReceiver 浅淡机制 静态BroadcastReceiver 实现 动态BroadcastReceiver 实现 BroadcastReceiver 启动 Service Android BroadcastReceiver 介绍 现在

Android BroadcastReceiver基础详解一

-.BroadcastReceivcer概述 1.什么是广播 BroadcastReceiver是Android四大组件之一,本质是一种全局的监听器,用于监听系统全局的广播消息.因此它可以非常方便的实现不同组件之间的通信. 2.BroadcastReceiver的创建启动 BroadcastReceiver是用用于接受程序所放出的Broadcast Intent,与应用程序启动的Activity.Service相同.也只需要两步: ①.创建需要启动的Broadcast的Intent ②.创建一个

Android:BroadcastReceiver的练习使用

1 package com.example.broadcastdemo1; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.content.Intent; 6 import android.content.IntentFilter; 7 import android.view.Menu; 8 import android.view.View; 9 10 public class MainA

【转】Android BroadcastReceiver介绍

本文主要介绍BroadcastReceiver的概念.使用.生命周期.安全性.分类.特殊的BroadcastReceiver(本地.粘性.有序.粘性有序广播).示例代码见BroadcastReceiverDemo,示例APK见:TrineaAndroidDemo.apk. 1.概念介绍及两种注册方式的区别 BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面.BroadcastReceiver包括两个概念,广播发送者和广播接收者(Receive

android BroadcastReceiver组件简单的使用

1.清单文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.ipdail" android:versionCode="1" android:versionName="1.

Android BroadcastReceiver详解

BroadcastReceiver,顾名思义就是"广播接收者"的意思,它是Android四大基本组件之一,这种组件本质上是一种全局的监听器,用于监听系统全局的广播消息.它可以接收来自系统和应用的的广播. 由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统不同组件之间的通信.比如Activity与通过startService()方法启动的Service之间通信,就可以借助于BroadcastReceiver来实现. BroadcastReceiver简

Android BroadcastReceiver实时监听电量

Android系统中实时的监听手机电量以及开机启动功能都是通过BroadcastReceiver组件实现的.我们可以动态注册这个类的一个实例通过 Context.registerReceiver()方法或者静态注册,通过<Receiver>标记在androidmanifest . xml.注意:如果我们注册一个接收器在Activity.onResume()实现,我们应该注销Activity在Activity生命周期的 onPause方法中.(这将减少不必要的系统开销).切记不能注销Activi

Android——BroadcastReceiver 广播 短信拦截

/** * 如何去理解BroadcastReceiver(广播)?   * 其实可以这样想,首先我们要有一个发送广播的“媒体”,在这个例子中,我们暂且用activity组件作为这个媒体,当然以后 * 会用到service,或者随机启动方式来发送广播,这看业务需求来决定. * 在这个例子中,当点击按钮的时候,一条广播就发送了出去,同样用到了意图对象Intent. * 和启动activity和service一样,我们需要为意图对象设置“标记”和“包裹”,它就像个基站,向世界发送信号. * 而对于广播

初学Android,BroadcastReceiver之发送接收广播

BroadcastReceiver用于监听系统全局广播消息,由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统中不同组件之间通信 启动它需要两步 1.创建需要启动的BroadcastReceiver的Intent 2.调用Context的SendBroadcast或sendOrederedBroadcast方法来启动指定的BroadcastReceiver 这其中关键是创建Intent时,要setAction("xxx"),而BroadcastRec