android广播过滤器.*,android – BroadcastReceiver与多个过滤器或多个BroadcastReceivers?...
我有一个Android Activity需要捕获两个不同的广播。我目前的方法是在活动中有一个单一的BroadcastReceiver,并抓住它的广播:
public class MyActivity extends Activity {
private MyActivity.BroadcastListener mBroadcastListener;
private boolean mIsActivityPaused = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
// Create the broadcast listener and register the filters
mIsActivityPaused = false;
mBroadcastListener = new BroadcastListener();
IntentFilter filter = new IntentFilter();
filter.addAction(Params.INTENT_REFRESH);
filter.addAction(Params.INTENT_UPDATE);
registerReceiver(mBroadcastListener, filter);
}
@Override
protected void onResume() {
super.onResume();
mIsActivityPaused = false;
}
@Override
protected void onPause() {
super.onPause();
mIsActivityPaused = true;
}
@Override
protected void onDestroy() {
unregisterReceiver(mBroadcastListener);
super.onDestroy();
}
private void refresh() {
// refresh
}
private void update() {
// update
}
private class BroadcastListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Params.INTENT_REFRESH && !mIsActivityPaused)) {
refresh();
} else if (intent.getAction().equals(Params.INTENT_UPDATE)) {
update();
}
}
}
}
我想要执行refresh()只有当我的活动是可见的在屏幕上,但我想捕获INTENT_UPDATE和执行update()在活动的整个生命周期,无论该活动是否可见。
我没有找到任何办法只注销我在onCreate中注册的两个过滤器之一,所以我使用一个标志来启用或禁用在捕获INTENT_REFRESH广播时执行的操作,具体取决于活动的状态。
问题是:这是正确的方法吗?
或者,最好有两个单独的BroadcastReceivers如下:
public class MyActivity extends Activity {
private MyActivity.BroadcastListenerRefresh mBroadcastListenerRefresh;
private MyActivity.BroadcastListenerUpdate mBroadcastListenerUpdate;
private boolean mIsBroadcastListenerRefreshRegistered = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create the broadcast listeners
mBroadcastListenerRefresh = new BroadcastListenerRefresh();
mBroadcastListenerUpdate = new BroadcastListenerUpdate();
registerReceiver(mBroadcastListenerRefresh, new IntentFilter(Params.INTENT_REFRESH));
registerReceiver(mBroadcastListenerUpdate, new IntentFilter(Params.INTENT_UPDATE));
}
@Override
protected void onResume() {
super.onResume();
if (mBroadcastListenerRefresh != null && !mIsBroadcastListenerRefreshRegistered) {
registerReceiver(mBroadcastListenerRefresh, new IntentFilter(Params.INTENT_REFRESH));
mIsBroadcastListenerRefreshRegistered = true;
}
}
@Override
protected void onPause() {
super.onPause();
if (mBroadcastListenerRefresh != null && mIsBroadcastListenerRefreshRegistered) {
unregisterReceiver(mBroadcastListenerRefresh);
mIsBroadcastListenerRefreshRegistered = false;
}
}
@Override
protected void onDestroy() {
unregisterReceiver(mBroadcastListenerRefresh);
unregisterReceiver(mBroadcastListenerUpdate);
super.onDestroy();
}
private void refresh() {
// refresh
}
private void update() {
// update
}
private class BroadcastListenerRefresh extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Params.INTENT_REFRESH)) {
refresh();
}
}
}
private class BroadcastListenerUpdate extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Params.INTENT_UPDATE)) {
update();
}
}
}
}
哪一个有更好的性能?
android广播过滤器.*,android – BroadcastReceiver与多个过滤器或多个BroadcastReceivers?...相关推荐
- android+广播+讲解,Android广播机制
主要内容: (1)广播机制介绍 (2)BroadcastReceiver实现 (3)BroadcastReceiver操作 (4)BroadcastReceiver生命周期 (5)注册Broadcas ...
- android广播教程,Android学习笔记(广播机制)
1.Android的广播机制介绍 收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同.接受广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理.好比我们收听交 ...
- Android 广播(Android 10)
adb shell am broadcast -a "com.mingrisoft" "com.example.myapplication" 代码实现 Andr ...
- android 广播震动,Android实现调用震动的方法
本文实例讲述了Android实现调用震动的方法.分享给大家供大家参考,具体如下: 调用Android系统的震动,只需要一个类 那就是Vibrator ,这个类在hard包中,一看系统级的服务,又要通过 ...
- android广播示例,android接受开机广播事件
[实例简介] [实例截图] [核心代码] package com.yin.servicetest; import com.yin.service.MyService; import android.a ...
- android 广播失败,android - 发送广播Intent SIM_STATE_CHANGED失败 - 堆栈内存溢出
我需要检查Sim卡的状态,并根据其状态执行一些操作. 根据我对BroadcastReceiver的了解,当Sim状态更改时,将执行broadcastReceiver的onReceive方法. 这是Br ...
- android 广播震动,android 震动和提示音的实现代码
android的消息提示(震动和提示音),实现代码如下所示: public class VibratorUtil { protected AudioManager audioManager; prot ...
- Android 广播的生命周期
一:Android 广播的生命周期 一个广播接收者有一个回调方法:void onReceive(Context curContext, Intent broadcastMsg).当一 ...
- Android广播机制:Broadcast
转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广 ...
- Android详细教程(基础篇):二十八、Android 广播机制BroadcastReceiver
广播机制(BroadcastReceiver) 11.1. BroadcastReceiver简介 在实际应用中,我们常需要等,等待系统抑或其他应用发出一道指令,为自己的应用擦亮明灯指明方向.而这种等 ...
最新文章
- js date 加一天_你不一定了解的js数据类型
- Java黑皮书课后题第5章:**5.19(打印金字塔形的数字)编写一个嵌套的for循环,打印下面的输出
- [Java]Thinking in Java 练习2.2
- CRM Fiori my note应用的后台ABAP实现
- Java StringBuilder subSequence()方法与示例
- 配置linux系统自带apache+php+mysql
- C++复习总结(涵盖所有C++基本考点)!
- 2. with check option能起什么作用?_【科普】专家教路:面膜护肤到底有什么用?
- 计算机应用基础第七章自测题,计算机应用基础 第七章.doc
- Linux下修改IP
- FaWave恢复twitter的办法
- HR看完这种简历就崩溃?真相是这样的!
- Docker之MySQL主从连接提示:Communications link failure
- 中国量子计算机的运算速度是,中国量子计算机问世,运算速度碾压顶级超算,美国:时代变了...
- Metasploit学习笔记(七)——Meterpreter后渗透之传统MS08-067漏洞利用(没成功)
- 文件服务器之一:NFS 服务器
- C语言的库函数:strlen的用法
- 研究生被导师嫌弃是种怎样的体验?写的太真实了...
- 前端实现播放直播视频或监控视频
- linux 设置系统时间为当前网络时间