目录
一、怎么设置广播接收者?
二、收到广播后怎么办?
三、怎么设置和发送广播信息?
在Android系统中,广播是一种运用在组件之间传递消息的机制,例如电池过低时会发送一条提示广播。那么我们如何去接收这条信息呢?如果要接收并过滤广播中的消息,我们就需要用到BroadcastReceiver(广播接收者),在安卓学习笔记一种我们提过Activity、Service、ContentProvider、BroadcastReceiver是四大组件,通过广播接收者可以监听系统中的广播消息,实现不同组件之间的通信。
1、广播是不同组件间进行通信的一种机制,广播可分为无序广播和有序广播
2、一个“活的”接收者接收特定的广播消息并作出回应,主要由intent-filter,action来实现,是不是觉得似曾相识呢?我们在隐式intent的时候也用到过
3、receiver在AndroidManifest.xml中以标签显示
4、receiver可以被activity或者service注册
5、receiver有onReceive()回调方法
可能你在看到这儿的时候有很多的问号,那么请带着疑问接着看下去,你会找到答案的
一、怎么设置广播接收者?
如我们文章开头提到的系统发出一条电池电量过低的广播消息,那我们要怎么样才能接收到这条信息呢?就好比《爱情公寓》里曾小贤主持的电台,我们怎么样才能接收到这个节目呢?就是要把我们的收音机调到对应的频道上。
同理,我们也需要把广播接收者注册一下,相当于“我们订阅了这个频道”,这样我们就可以接收到“这个频道的消息”了。以接收系统广播“电量过低”为例:
1.动态注册
特点:
- 动态注册是创建一个广播接收者,并在Activity中通过代码进行注册。
- 动态注册的广播接收者是否被注销依赖于注册广播的组件,如果在MainActivity中注册,那么MainActivity被销毁时,广播接收者也随之被注销。
如果我们要接收程序或者系统发出的广播消息,我们首先要创建一个广播接收者,我们可以在程序的包中创建一个Receiver3类继承自BroadcastReceiver,并重写onReceive()方法,这里Receiver3是我创建的广播接收者的名称,建好的文件中如下所示:
(Receiver3.java):
package com.example.receivebroadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class Receiver3 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
创建广播接收者完成后,我们需要在MainActivity中注册广播接收者Receiver3
(MainActivity.java):
ackage com.example.receivebroadcast;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Receiver3 receiver3