Android 静态注册广播接收者和动态注册广播接收者

Posted 路 宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 静态注册广播接收者和动态注册广播接收者相关的知识,希望对你有一定的参考价值。

一、静态注册广播接收者步骤:
在这里插入图片描述

1.布局页面:

	<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_static"
        android:layout_marginLeft="5dp"
        android:text="静态注册发送广播"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_dynamic"
        android:layout_marginLeft="5dp"
        android:text="动态注册发送广播"
        />

2.创建广播接收者StaticReceiver:

public class StaticReceiver extends BroadcastReceiver {
    private static final String TAG = "StaticReceiver";
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e(TAG, "静态注册的广播接收者" );
    }
}

3.在清单文件中注册广播接收者

<!--静态注册广播接收者-->
        <receiver android:name=".StaticReceiver">
            <intent-filter>
                <action android:name="com.example.day_static"/>
            </intent-filter>
        </receiver>

4.创建一个接口ActionUtils,定义广播注册与发送广播的唯一标识:

public interface ActionUtils {
    //广播注册时与发送广播时的唯一标识,必须要保持一致(静态注册)
    String ACTION_FLAG="com.example.day_static";
    //广播注册时与发送广播时的唯一标识,必须要保持一致(动态注册)
    String ACTION_UPDATE_IP="com.example.day_dynamic";
}

5.点击按钮发送广播:

				//静态发送广播给接收者
                Intent intent = new Intent();
                //ActionUtils.ACTION_FLAG与注册时保持一致
                intent.setAction(ActionUtils.ACTION_FLAG);
                sendBroadcast(intent);

结果会输出日志:
在这里插入图片描述
二、动态注册广播接收者步骤:
1.创建广播接收者

public class DynamicReceiver extends BroadcastReceiver {
    private static final String TAG = "DynamicReceiver";
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e(TAG, "onReceive: 动态注册广播接收者" );
    }
}

2.在onCreate中动态注册广播接收者:

		 //使用java代码动态注册广播接收者
        DynamicReceiver dynamicReceiver = new DynamicReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction(ActionUtils.ACTION_UPDATE_IP);
        registerReceiver(dynamicReceiver,filter);

3.点击按钮发送广播:

 				Intent intent = new Intent();
                intent.setAction(ActionUtils.ACTION_UPDATE_IP);
                sendBroadcast(intent);

输出日志为:
在这里插入图片描述

以上是关于Android 静态注册广播接收者和动态注册广播接收者的主要内容,如果未能解决你的问题,请参考以下文章

Android--静态广播和动态广播的区别

12、注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。

广播机制之动态注册和静态注册

Android 第六讲 广播接收器和服务

Android中BroadcastReceiver的两种注册方式(静态和动态)详解

Android深入四大组件广播的注册发送和接收过程