Android学习——BroadCast(一)

 

初识广播


BroadCast即为广播,为安卓四大组件之一,用于在应用程序和Activity间传输信息。一条广播,分为发送和接收两部分,发送方通过Intent存储信息,并进行发送。接收方通过BroadCastReceiver来接收消息。如果要指定接受的消息类型,则可以通过过滤器intentfilter来过滤。BroadCastReceiver的生命周期很短,只有十秒左右,所以一些耗时操作不能在接收方进行,而需要接收方把相应信息传给Service,并在Service中进行。常用的广播方式有两种:普通广播和有序广播。这篇博文先介绍普通广播。

 

普通广播的特点


普通广播主要有如下几个特点:

1.同级别的接受顺序随机

2.级别低的后收到广播

3.接收器不能拦截广播也不能修改广播内容(若拦截或修改则会报错)

4.同级别动态注册高于静态注册

 

普通广播的发送


 

 

如文章开篇所言,发送广播,是通过Intent对象来发送的,这里以发送简单的字符串为例,代码如下:

Intent intent=new Intent();
                intent.putExtra("test","普通广播"); 
                intent.setAction("NORMAL"); //设定广播的Action,用于过滤
                sendBroadcast(intent);

 

 

普通广播的接收


创建一个类继承BroadcastReceiver类,并实现onReceive方法即可:

public class BC1 extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        String text=intent.getStringExtra("test");
        Toast.makeText(context,"BC1"+text,Toast.LENGTH_SHORT).show();
    }
}

 

广播的静态和动态注册


静态注册是在Manifest文件中声明,代码如下:

<receiver android:name=".BC1">
            <intent-filter
                android:priority="100">
                <action android:name="NORMAL"/>
            intent-filter>
        receiver>

其中,action即为过滤所用的关键字,priority为广播的级别,范围在-1000和1000之间,数字大的级别高。

 

动态注册实在Activity中注册,代码如下:

IntentFilter intentFilter = new IntentFilter("NORMAL");
        BC2 bc2 = new BC2();
        registerReceiver(bc2,intentFilter);

需要注意的是,由于是在Activity中注册的,当Activity停止时,广播也就无法接收了。

你可能感兴趣的:(Android学习——BroadCast(一))