项目中的广播使用
BroadCastReceiver广播接收者,安卓四大组件之一
广播三大要素
广播发送者:发送广播
广播接收者:用于接收广播
要处理的事情:处理广播的相关信息,intent有图对象
广播的使用场景
同一APP下多个组件之间传递数据(Activity/Fragment/Service之间传递数据
2个App之间传递数据
技能get点:
自定义广播接收者
使用广播接收者进行电话拦截和短信拦截和系统电量的变化
广播生命周期
静态注册和动态注册的区别:假如说Activity是接收者:
动态注册
广播会跟Activity的生命周期的结束而结束;
自由的控制注册和取消,有很大的灵活性
静态注册:
广播不会跟随Activity的生命周期的结束而结束,一直存在,即使应用程序关闭,也会被唤醒接收广播
全局的广播
如何实现广播
先创建一个广播,写一个类继承BroadcastReceiver即可
package com.example.day12;
public class MyReceiver extends BroadcastReceiver {
@Override
protected void onReceive(Context context,Intent intent) {
}
注册一个广播
静态广播注册
在清单文件中注册广播就是静态的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.day12">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--我是一个广播-->
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.feng.broad" />
</intent-filter>
</receiver>
<!--广播结束-->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>