您的位置:首页 > 移动开发 > Android开发

Android BroadcastReceiver使用

2017-04-19 15:11 531 查看

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 (一) 使用>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: