zoukankan      html  css  js  c++  java
  • Android BroadcastReceiver使用

    1. 介绍

    BroadcastReceiver用于接收广播事件(Intent), 是Android四大组件之一

    2. 使用

    2.1  实现广播接收类

    实现一个广播收类继承BroadcastReceiver类, 并覆写onReceive()方法

    public class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {}
    }

    2.2 注册广播事件

    注册广播事件的方法由两种: 静态注册和动态注册

    2.2.1 静态注册

    修改AndroidManifest.xml文件, 添加感兴趣的ACTION

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        <application
            ...
            <receiver android:name=".TestBroadcastReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.EDIT" />
                </intent-filter>
            </receiver>
        </application>
    </manifest>

    2.2.2 动态注册

    动态注册是在代码中实时注册广播事件的方法.

    相关函数如下:

    MyBroadcastReceiver mybroadcastReceiver = new MyBroadcastReceiver();
    ...
    /* Register */
    IntentFilter filter = new IntentFilter();
    filter.addAction("android.test.broadcast");
    MainActivity.this.registerReceiver(mybroadcastReceiver, filter);
    
    ...
    /* Unregister */
    MainActivity.this.registerReceiver(mybroadcastReceiver);

    2.3 发送广播事件

    发送广播的方法如下:

    /* 方法1: Action为 "android.test.broadcast" */
    Intent intent = new Intent("android.test.broadcast"); sendBroadcast(intent);

    /* 方法2: Action为 "android.intent.action.EDIT"*/
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_EDIT);
    sendBroadcast(intent);

    3. 注意事项

    值得主要的是广播接受类(BroadcastReceiver)的生命周期

    当一个广播消息到达接收者时, Android调用它的onReceive()方法并传递给它包含消息的Intent对象
    广播接收者被认为仅当它执行这个方法时是活跃的, 当onReceive()返回后, 它是不活跃的.

    参考:
    <Android 浅析 Broadcast (一) 使用>

  • 相关阅读:
    【IOS 开发】Object
    互联网开发-前沿与热门
    JS_call_APP native 与 html的交互
    扫描二维码区域限制
    二维码高亮
    charles抓包的使用教程
    Mac 在命令行中获得Root权限
    Mac下安装Wireshark,双击闪退
    iOS 解惑
    IOS_改变UITextField placeHolder颜色、字体
  • 原文地址:https://www.cnblogs.com/hzl6255/p/6733596.html
Copyright © 2011-2022 走看看