01 Android基础--广播

什么是广播?

传输信息的机制。 主要记住三个要素:1.广播(Broadcast) - 用于发送广播;
2.广播接收器(BroadcastReceiver) - 用于接收广播;3.意图内容(Intent) - 广播相关信息的媒介

广播的分类

(1)按照注册的方式分类

  • 静态广播:在XML文件中注册的广播,activity销毁了,还能接收广播

  • 动态广播:用JAVA代码注册的广播。activity销毁了,广播接收不了了

// 静态广播

// 第一步:广播接收着
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 收到广播消息
    }
} 

//第二步:在xml中注册广播接收器
<receiver android:name=".MyBroadcastReceiver" >
   <intent-filter>
      <action android:name="my_broadcaster_action"></action>
   <intent-filter>
</receiver> 


// 第三步:发送广播
Intent intent = new Intent();
intent.setAction="my_broadcaster_action");
intent.putExtra("key_data", filePath);
// 发送广播
sendBroadcast(intent); 
// 动态广播:

// 第一步:广播接收着
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 收到广播消息
    }
} 

//第二步:用JAVA代码注册的广播接收器
// new 出广播接收器的对象
receiver = new MyBroadcastReceiver();
// 设置Action过滤
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_broadcaster_action");
// 注册广播接收器
registerReceiver(receiver, intentFilter);

// 第三步:发送广播
Intent intent = new Intent();
intent.setAction="my_broadcaster_action");
intent.putExtra("key_data", filePath);
// 发送广播
sendBroadcast(intent); 

补充:

        <receiver
            android:name=".MyBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>



android:exported:此BroadcastReceiver能否接收其他App发出的广播(其默认值是由receiver中有无intent-filter决定的,如果有intent-filter,默认值为true,否则为false);
android:name:此broadcastReceiver类名;
android:permission:如果设置,具有相应权限的广播发送方发送的广播才能被此broadcastReceiver所接收;
android:process:broadcastReceiver运行所处的进程。默认为App的进程。可以指定独立的进程(Android四大组件都可以通过此属性指定自己的独立进程);

(2)按照发送的方式分类

  • 标准广播

  • 有序广播

标准广播:广播接收器会在同一时刻接收到这条广播消息,没有先后顺序
在这里插入图片描述

有序广播:有先后顺序, 并且可以截断正在传递的广播,截断以后,后面就收不到消息了
在这里插入图片描述

(3)按照定义的方式分类

  • 系统广播:Android系统中内置了多个系统广播,电池电量,有没有网络等等

  • 自定义广播:自己写的

本地广播LocalBroadcastManager

安全 。 使用该机制发出的广播只能够在应用程序内部进行传递,并且广播接收器也只能接收来自本地应用程序发出的广播。

// 第一步:广播接收着
class LocalReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();
        }
}


//第二步:注册的广播接收器
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
localReceiver = new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver, intentFilter); 


// 第三步:发送广播
Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值