开发者日记(2016年01月07日11:52:28):关于android 广播的学习:

开发者日记(2016年01月07日11:52:28):

关于android 广播的学习:

普通广播:

Intent intent = new Intent();
                intent.putExtra("msg", "这是一条普通广播");
                intent.putExtra("msg2", "这是一条普通广播2");
                intent.setAction("BC_One");
                sendBroadcast(intent);//普通广播

有序广播:

Intent intent2 = new Intent();
                intent2.putExtra("msg", "这是一条有序广播");
                intent2.setAction("BC_One");
                sendOrderedBroadcast(intent2,null);//有序广播, intent + 权限

其中 putExtra(String string1,String string2) string1为信息的标志位,string2为信息内容。
setAction(“BC_One”)是这条广播的标志位。

异步广播已经移除。

广播的接收需要注册,分为静态注册和动态注册。
静态注册(Androidmanifest.xml 作用于全局(手机所有软件 ps:暂时的理解))

<receiver android:name=".BC1">
            <intent-filter>
                <!--优先级  priorit-->
                <action android:name="BC_One"/>
            </intent-filter>
        </receiver>

其中 为广播的优先级,优先级数值越高(0-1000),广播优先级越高。

动态注册(Activity中 程序关闭后注意需要销毁)

IntentFilter intentFilter=new IntentFilter("BC_One");
        bc1=new BC1();
        registerReceiver(bc1,intentFilter);

IntentFilter intent过滤器 只留下名为xx的广播(发送时 标志位为setAction(“”))

@Override
    protected void onDestroy()
    {
        super.onDestroy();
        unregisterReceiver(bc1);//销毁广播
    }

接收广播:

public class BC1 extends BroadcastReceiver
{
    private static String s1,s2;
    @Override
    public void onReceive(Context context, Intent intent)
    {
        s1=intent.getStringExtra("msg");
        s2=intent.getStringExtra("msg2");
        Log.i("tag",s1+"   "+s2);
    }
}

BroadcastReceiver是抽象类,需要新建一个Class继承BroadcastReceiver类,并重写onReceive方法。
广播接收时不能做耗时操作,广播的维持时间只有5-10秒,不可开辟子线程。如需要耗时操作应写入Service中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值