Android基础知识:Broadcast Receiver(1

2018-12-30  本文已影响0人  JYangkai

废话

Android中的广播和现实生活中的广播有点相似,还记得小学时候,每到星期二的下午4点,学校就会放广播通知全校老师去开会,而我们学生就放学了,每次只要听到广播,全校学生都跑回教室拿书包回家。

学校的广播是对本校学生和老师发出的,老师和学生接收到广播后自己就处理自己的事情,老师去开会,学生回家,其实这和Android中的广播一样

Android中可以自己发出广播,也可以是系统发出广播,注册了广播的接收者就在接收到广播后就会处理自己的逻辑,下面我们来学习下广播的用法

定义一个广播接收器

public class MyBroadcastReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {
        
    }
    
}

可以看到定义一个广播接收器非常简单,但是不要忘了在AndroidManifest.xml中注册

<receiver android:name=".MyBroadcastReceiver"
    android:enabled="true"
    android:exported="true"/>

这样,我们的广播接收器就注册完成了

这样注册广播的方式为静态注册,还有一种方式是动态注册,是以内部类的形式去注册

发出广播

我们注册完广播接收器,需要接收广播,那么接收何种广播,广播又怎么发出呢,其实很简单,同样需要构建一个Intent

Intent intent=new Intent("yk.demo.send");
sendBroadcast(intent);

这样就可以发出广播了

注册广播

我们发出了广播之后怎么注册呢,其实也很简单,只需做如下修改

<receiver android:name=".MyBroadcastReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="yk.demo.send"/>
    </intent-filter>
</receiver>

这样就注册了"yk.demo.send"这个广播

接收广播

我们注册了广播在哪里处理呢

我们可以看到刚才注册的广播接收器中有一个onReceive方法,我们就在这里进行处理

@Override
public void onReceive(Context context, Intent intent) {

}

onReceive里面处理接收到广播后的逻辑

Android系统的很多操作和变化都会发出广播,比如点亮、屏幕、时间区域、关机、开机等,我们可以注册系统的广播,然后处理我们想处理的事情。

上一篇下一篇

猜你喜欢

热点阅读