(android broadcastreceiver) Android 广播接收器BroadcastReceiver详解
Android 中的广播接收器(BroadcastReceiver)是一个用于监听来自系统或其它应用的全局消息(即广播)的组件。广播可以用于多种场景,例如监听网络变化、电池电量变化、或接收来自其它应用发送的数据。
下面将详细介绍如何使用广播接收器,并给出示例代码:
- 创建BroadcastReceiver子类:
必须继承
BroadcastReceiver
并覆写onReceive()
方法。例如,创建一个监听网络变化的广播接收器:public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 这里处理接收到的广播信息 Toast.makeText(context, "网络状态已变化!", Toast.LENGTH_SHORT).show(); // 可以通过 intent.getAction() 获取广播的类型,根据不同类型做不同的响应 } }
- 在AndroidManifest.xml中注册Receiver:
可以在
<application>
标签下注册你的接收器。例如:注意:从Android 8.0(API 级别 26)开始,对清单中的广播进行了限制。某些广播不能再在清单中静态注册,必须使用动态注册。
- 动态注册BroadcastReceiver:
若需在运行时根据某些条件动态地注册广播接收器,可以在相应的活动或服务中完成:
@Override protected void onResume() { super.onResume(); IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); this.registerReceiver(mNetworkChangeReceiver, filter); } @Override protected void onPause() { super.onPause(); if(mNetworkChangeReceiver != null){ unregisterReceiver(mNetworkChangeReceiver); } }
在这段代码中,首先创建了IntentFilter
的实例,并设置了所关心的动作,然后在活动的onResume()
方法中注册了广播接收器,在onPause()
中取消注册。这样做是为了只有在活动处于前台时才接收广播,节省资源。
- 发送自定义广播:
如果你想发送自己的广播,可以这样做:
Intent intent = new Intent("com.example.broadcast.MY_BROADCAST"); // 可选:添加数据 intent.putExtra("key", "value"); // 发送标准广播 sendBroadcast(intent); // 发送有序广播 // sendOrderedBroadcast(intent, null);
自定义广播需要有对应的广播接收器来监听此类广播,可以使用上述的静态或动态注册方式。
请根据实际情况,选择合适的广播注册方式。务必注意从Android 8.0开始对于隐式广播的限制。此外,编写广播接收器时应考虑其对电池寿命的潜在影响,并根据实际情况采用最佳实践。
(python re.sub用法) Python正则表达式re.sub()用法详解 Python正则表达式模块 re 中的 re.sub() 方法 全网首发(图文详解1)
(computed 传参) Vue中的计算属性computed传参方式 Vue 中计算属性的使用和传参解决方案 全网首发(图文详解1)