Android学习——BroadCast(一)

 

初识广播


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

 

普通广播的特色


普通广播主要有以下几个特色:ide

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

2.级别低的后收到广播code

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

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

 

普通广播的发送


 

 

如文章开篇所言,发送广播,是经过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之间,数字大的级别高。get

 

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

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

须要注意的是,因为是在Activity中注册的,当Activity中止时,广播也就没法接收了。

相关文章
相关标签/搜索