android广播机制

【1】动态注册广播
所谓的动态注册广播其实就是在onCreate方法中注册广播,其相对于静态注册广播的优点就是能够*的控制注册与注销,还有就是动态注册的广播和activity是绑定的,activity关闭后,注册的广播也就失效了
~注册广播的步骤:
根据api可以看到registerReceiver方法接收两个参数:
android广播机制
所以就先去获取BroadcastReceiver和IntentFilter的实例,然后传入即可。
~1.获取BroadcastReceiver实例

MyReceiver receiver = new MyReceiver();//class MyReceiver extends BroadcastReceiver

~2.获取IntentFilter实例

IntentFilter filter = new IntentFilter();
             filter.addAction("广播的值(根据自己的需求写入相应的值)");

~3.将获取到的实例传入registerReceiver方法中

registerReceiver(receiver,filter);

~4.最后别忘记动态注册的广播需要注销才行

 @Override
    protected void onDestroy() {
        unregisterReceiver(receiver);
        super.onDestroy();
    }

【2】静态注册广播
~1.新建一个广播接收器(当前项目的包名—>New—>Other—>Broadcast Receiver)

public class MySecondReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        /*
        * 根据需求写入相应的逻辑
        * */
    }

~2.在AndroidMainfest.xml中注册之后就可以使用了

<receiver
            android:name=".MySecondReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="要接收的广播的值"/>
            </intent-filter>
        </receiver>

【3】自己发送广播
~发送广播很简单,有一点类似于使用intent 给其他activity传递数据。只不过intent传递数据使用的是putExtra()等一系列的方法,而发送广播可以把它当成传递了一个action参数

 Intent intent = new Intent();
                intent.setAction("xxxxxx");
                sendBroadcast(intent);