Android:BroadCast Receiver

目录

BriadCast Receiver(广播接收者)

BriadCastReceiver是什么?

重点:Android中出现的第一个错误

广播接收者一共有两种,分别是:标准广播和有序广播

        标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没有先后顺序。效率比较高,但是不能被截断。


BriadCast Receiver(广播接收者)

BriadCastReceiver是什么?

BriadCastReceiver是Android四大组件之一,必须在清单文件(androidManifest.xml)文件中进行注册

是组件之间传播数据(intent)的一种机制

APP哪些地方用到了广播

 电话

短信

电量

WIFI是否连接

消息弹窗

重点:Android中出现的第一个错误

在广播组件中进行耗时操作,就会报 :application no reponse(ANR)

广播接收者一共有两种,分别是:标准广播和有序广播

        标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没有先后顺序。效率比较高,但是不能被截断。

        标准广播又分为静态注册和动态注册

              静态注册

                        创建广播接收器(可以使用快捷方式) 

                        注册广播:静态注册需要在清单文件中注册由于是快捷方式创建的广播接收器,注册会自动完成。所有的静态广播都是在application标签内的receiver标签里注册的

<receiver
            android:name=".MyBroadReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
            //添加需要监听的广播值
                <action android:name="com.example.broadcasttest.MY_BROADCAST" />
            </intent-filter>
        </receiver>

                           发送信息给静态注册的广播接受者

                动态注册

                        创建广播接收器,继承BroadcastReceiver,重写父类的onReceive()方法
                        创建IntentFilter的实例,添加值为想要监听的广播的action
                        创建广播接收器的实例,调用registerReceiver()方法进行注册
                        取消注册,动态注册的广播接收器需要取消注册
                        声明权限:在AndroidManifest.xml文件中加入权限

 myDynamicReceiver=new MyDynamicReceiver();
        //注册动态广播接收者
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("shy");
        registerReceiver(myDynamicReceiver,intentFilter);


class MyDynamicReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("动态广播接收者", "onReceive: "+intent.getStringExtra("shy"));
        }
    }

                        为防止内存泄漏需要在onDestory中进行反注册

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

                        发送信息给动态注册的广播接受者

猜你喜欢

转载自blog.csdn.net/m0_60623666/article/details/125952202