最近在做个项目时需要在一个Activity中监听网络数据是否有更新,然后在另一个activity中更新,涉及到两个activity之间的接口回调,网上找了很多资料总算是弄出来了
首先定义一个监听接口
`public interface InformUpdateListener {
void updateData();
}
定义一个接口管理类
public class InformUpateListenerManager {
private InformUpdateListener informUpdateListener;
private Context mContext;
private static InformUpateListenerManager manager;
public static InformUpateListenerManager getInstance(Context context){
if(manager==null){
manager = new InformUpateListenerManager(context);
}
return manager;
}
public InformUpateListenerManager(Context context){
this.mContext =context.getApplicationContext();//使用getAppcationContext()防止单例模式内存泄漏
}
public void setInformUpdateListener(InformUpdateListener informUpdateListener) {
this.informUpdateListener = informUpdateListener;
}
public void updateData() {
if (informUpdateListener != null) {
informUpdateListener.updateData();
}
}
}
在需要监听数据是否有更新的Activity类中调用,必须使用单例模式,否则会报空指针异常
InformUpdateListenerManager informUpdateListenerManager = new InformUpdateListenerManager(MainActivity.this);
informUpdateListenerManager.getInstance(MainActivity.this).updateData();
在需要数据更新的Activity中实现具体的接口方法
//接口InformUpdateListener的实现方法,监听数据更新中是否有首页图片更新
InformUpdateListenerManager informUpdateListenerManager = new InformUpdateListenerManager(ShoppingChannelActivity.this);
informUpdateListenerManager.getInstance(ShoppingChannelActivity.this).setInformUpdateListener(new MyInformUpdateListener(this));
}
最好使用静态内部类是实现具体接口方法
//静态内部类实现接口监听
static class MyInformUpdateListener implements InformUpdateListener {
private WeakReference<Activity> mWeakReference;
public MyInformUpdateListener(Activity activity){
mWeakReference = new WeakReference<Activity>(activity);//使用弱引用引用外部Activity对象
}
@Override
public void updateData() {
//具体实现方法
}
}
在网上找了很多资料,要么报空指针异常,要么监听不了,要么内存泄露,我这个我自己测试了是可以用的,如果代码写的哪里有什么问题或者繁琐,欢迎指点,毕竟也是自己网上找了很多资料,一点一点测试出来的,
版权声明:本文为liuxiangsheng911原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。