Android广播

2016-04-05  本文已影响186人  天天想念
什么是广播?

广播:相当于iOS中的通知,给全局发送一个信息。所有对这条信息感兴趣的广播接收者对应做自己的处理逻辑。

广播接收者:接收广播的对象,一般是localReceiver类

广播种类
广播的注册方式

静态注册和动态注册

<receiver android:name=".ForceOfflineReceiver" >    
    <intent-filter>        
        <action android:name="com.example.broadcastbestpractice.FORCE_OFFLINE" />    
    </intent-filter>
</receiver>

静态注册特点:程序不需要启动就能进行注册和注销。(需要注意添加权限的声明)

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(new BroadcastReceiver(), intentFilter);

动态注册的广播接收者一定要在onDestroy()方法中通过调用** unregisterReceiver()**方法来取消注册。
动态注册特点:非常灵活,但是必须程序启动才能进行注册和注销。

自定义广播
自定义标准广播:
<action android:name="com.example.broadcastbest.mybroadcast" /> 
Button forceOffline = (Button) findViewById(R.id.force_offline);
forceOffline.setOnClickListener(new OnClickListener() {   
    @Override   
    public void onClick(View v) {     
           Intent intent = new Intent("com.example.broadcastbest.mybroadcast"); 
           sendBroadcast(intent);   
    }
});
发送有序广播

广播是一种跨进程的通信方式(接收系统广播就可以看出)
和标准广播的发送方式一样,只需要将activity中的sendBroadcast(intent)方法修改为sendOrderedBroadcast(intent, null)方法即可。由于有序广播是有顺序的,所以可以在receiver标签的intent-filter标签中追加priority属性,该属性是一个整数值,从而保证接收的顺序,onReceive()方法中调用abortBroadcast()方法,该广播会被截断。

本地广播
上一篇 下一篇

猜你喜欢

热点阅读