android广播通讯,Android 各页面间通讯的解决方案(替换广播)

该博客介绍了如何在Java中实现一个简单的监听器接口`INotifyListener`,并创建了一个`NotifyListenerManager`来管理监听器的注册、注销和通知发送。`NotifyListenerManager`采用单例模式,支持向所有注册页面或特定页面发送通知。在需要监听的页面中,需要实现`INotifyListener`接口,并在页面创建时注册监听,在销毁时注销监听。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先定义一个接口

​public interface

INotifyListener {

public void

notifyContext(Object obj);

​}​

2、定义一个manager

public class NotifyListenerMangager

{

public static NotifyListenerMangager

manager;

​ private List listeners = new

ArrayList();

​ private Map maps

=newHashMap();

//单例模式​

​public static NotifyListenerMangager

getInstance(){

if(manager == null){

manager = new NotifyListenerMangager();

​}

return manager;

​}

//注册监听

​​public void

registerListener(INotifyListener lister,String tag){

if(listeners.contains(lister)) return;

​listeners.add(lister);

​maps.put(tag,lister);

​}

//去除监听​

​public void

unRegisterListener(INotifyListener

lister){

if(listeners.contains(lister)){

listeners.remove(lister);

​}

if(maps.get(lister) != null){

maps.remove(lister);

​}

}

//向所有注册页面发通知​

​public void nofityAllContext(Object

obj){

for (INotifyListener lister : listeners)

{

lister.notifyContext(obj);

​}

}

//向某一页面发通知

​public void nofityContext(Object obj,String

tag){

INotifyListener lister =

maps.get(tag);

​ if(lister !=

null){

lister.notifyContext(obj);

​}

}

//去除所有监听,建议系统退出时

public void

removeAllListener(){

listeners.clear();maps.clear()​;

​}

}

3、在需要增加监听的页面

实现INotifyListener接口

注册监听​

@Override

​protected void

onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

​setContentView(R.layout.activity_list);

​initData();

​initViews();

​NotifyListenerMangager.getInstance().registerListener(this,TAG);//TAG为Activity名

​}​

取消监听

@Override

​protected void

onDestroy() {

super.onDestroy();

NotifyListenerMangager.getInstance().unRegisterListener(this);

​}​

此页面实现了方法用于接收消息

@Override

​public void

notifyContext(Object obj) {

Log.i(TAG,obj.toString());

​//回调

​}​

4、使用(发消息)

//通知全部页面​

NotifyListenerMangager.getInstance().nofityAllContext("请刷新");

//通知某一个注册的页面​

​NotifyListenerMangager.getInstance().nofityContext("请刷新",ListActivity.TAG);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值