Android中发送广播消息刷新Fragment

近日需要完成这样的功能:一个页面(Fragment)刷新以后,需要刷新多个页面的Fragment。

我首先想到了,是观察者模式的升级版:发布-订阅模式。加之笔者用Otto做过发布-订阅功能(Android在另一个类中获得Http消息_wangzhezhilu001的专栏-CSDN博客),因此首先就想到这个模式。

在确定该功能能完成通知的同时,在想能否用其他模式来完成。

想到了Android四大组件之一的广播。

继续研究,发现广播组件即为发布-订阅模式。

首先第一个选择是:静态注册广播还是动态注册广播。

发现静态注册广播只能用一次,而动态注册广播能用多次,于是选择注册动态广播。

第二个难题:注册和反注册广播的位置。对于Activity来说,比较好的选择为onResume()注册、onPause()注销,但Fragment并无这两个功能。笔者想到Fragment依托于Activity,不需要考虑onResume()和onPause(),比较好的选择是:void  onCreate(Bundle saveInstanceState) 和 void onDestroy()。

第三步:写代码。

1.广播接收器定义:

//广播的定义
class BroadcastReceiverImpl extends BroadcastReceiver {
	// 复写onReceive()方法
	// 接收到广播后,则自动调用该方法
	@Override
	public void onReceive(Context context, Intent intent) {
		//写入接收广播后的操作
		mHandler.sendEmptyMessage(0);
	}
}


//声明在接收的Fragment里 
BroadcastReceiverImpl mBroadcastReceiverImpl = new BroadcastReceiverImpl();

2.动态注册

@Override
public void onCreate(Bundle saveInstanceState){
	super.onCreate(saveInstanceState);
	//创建IntentFilter
	IntentFilter intentFilter = new IntentFilter();
	//设置接收广播的类型
	intentFilter.addAction("Test.broadcast");
	//动态注册:调用Context的registerReceiver()方法
	getActivity().getBaseContext().registerReceiver(mBroadcastReceiverImpl, intentFilter);
}

3.动态注销(反注册)

@Override
public void onDestroy(){
	super.onDestroy();
	getActivity().getBaseContext().unregisterReceiver(mBroadcastReceiverImpl);
}

4.发送广播消息

//发送广播消息
final Intent intent = new Intent();
//广播内容
intent.setAction("richers.com.raworkapp_android.view.activity.TaskDetailsActivity");
getBaseContext().sendBroadcast(intent);

运行代码,发现可以发送和接收广播消息,任务完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值