Android - Broadcast

简介: 广播接收器(Broadcast Receiver) 标准广播(Normal Broadcasts)完全异步的广播。广播发出后,所有的广播接收器几乎同时接收到这条广播 有序广播(Ordered Broadcasts)同步广播。
广播接收器(Broadcast Receiver)
标准广播(Normal Broadcasts)完全异步的广播。广播发出后,所有的广播接收器几乎同时接收到这条广播
有序广播(Ordered Broadcasts)同步广播。同一时刻只有一个广播接收器能接收到这条广播。这个接收器处理完后,广播才会继续传递。

注册广播。在代码中注册称为动态注册。在AndroidManifest.xml中注册称为静态注册。 动态注册的刚波接收器一定要取消注册。在onDestroy()方法中调用unregisterReceiver()方法来取消注册。

创建广播接收器:调用onReceive()方法,需要一个继承BroadcastReceiver()的类。
不要在 onReceive()方法中添加过多的逻辑操作或耗时的操作。因为在广播接收器中不允许开启线程,当 onReceive()方法运行较长时间而没结束时,程序会报错。因此广播接收器一般用来打开其他组件,比如创建一条状态栏通知或启动一个服务。
标准广播
新建一个MyExampleReceiver继承自BroadcastReceiver。
 
  
public class MyExampleReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
Toast.makeText(context,"Got it",Toast.LENGTH_SHORT).show();
//abortBroadcast();
}
}
abortBroadcast();可以截断有序广播
在AndroidManifest.xml中注册广播接收器;name里填接收器的名字。
可以设置广播接收器优先级: <intent-filter android:priority="100">

 
  
<receiver android:name=".MyExampleReceiver">
<intent-filter>
<action android:name="com.rust.broadcasttest.MY_BROADCAST"/>
</intent-filter>
</receiver>
让接收器接收到一条“ com.rust.broadcasttest.MY_BROADCAST ”广播。
发送自定义广播(标准广播)时,要传送这个值。例如:
 
  
Intent intent = new Intent("com.rust.broadcasttest.MY_BROADCAST");
sendBroadcast(intent);
发送有序广播,应当调用sendOrderedBroadcast();
 
  
Intent intent = new Intent("com.rust.broadcasttest.MY_BROADCAST");
sendOrderedBroadcast(intentnull);

本地广播
广播只能在应用程序 内部进行传递,并且广播接收器也只能接收到来自本应用程序发出的广播。
本地广播无法静态注册。比全局广播更加高效。
用LocalBroadcastManager管理广播。将其实例化getInstance(),调用发送广播和注册广播接收器的方法。
--> sendBroadcast();--> registerReceiver();


在配置文件中声明权限,程序才能访问一些关键信息。
例如允许查询系统网络状态。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

机器开机广播

<uses-permission android:name="android.permission.BOOT_COMPLETED">

允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
如果没有申请这些权限,程序有可能会意外关闭。并弹出对话框。






目录
相关文章
|
6月前
|
安全 Java Shell
Android发送广播时报错:Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx
Android发送广播时报错:Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx
944 0
|
5月前
|
设计模式 Android开发
44. 【Android教程】广播接收器:Broadcast Receiver
44. 【Android教程】广播接收器:Broadcast Receiver
102 2
|
6月前
|
存储 Android开发
Android插件化-Broadcast篇,2024年最新安卓面试自我介绍
Android插件化-Broadcast篇,2024年最新安卓面试自我介绍
|
6月前
|
XML Java Android开发
Android Studio App开发之监听系统广播Broadcast的讲解及实战(包括接收分钟到达广播、网络变更广播、定时管理器等 附源码)
Android Studio App开发之监听系统广播Broadcast的讲解及实战(包括接收分钟到达广播、网络变更广播、定时管理器等 附源码)
457 0
|
6月前
|
XML 安全 Java
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
581 0
|
Android开发
Android:四大组件之 Broadcast(广播)
Broadcast 是一种广泛运用的、在应用程序之间传输信息的机制,Android 中的广播与传统意义上的电台广播类似,一个广播可以有任意个接收者,当然也可能不被任何应用程序所接收。广播机制是一个典型的发布-订阅模式,也就是观察者模式。
143 0
Android:四大组件之 Broadcast(广播)
|
开发工具 Android开发
Android App开发超实用实例 | ​Broadcast
介绍Broadcast的静态注册、动态注册及有序广播。 Broadcast(广播)分为发送者和接收者,可实现跨应用的消息传递。重启手机、闹钟、来电、接收短信等都会发出广播,通过BroadcastReceiver就可以接收广播并进行相应处理。
180 0
Android App开发超实用实例 | ​Broadcast
下一篇
无影云桌面