Android两个Activity之间的接口回调

最近在做个项目时需要在一个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版权协议,转载请附上原文出处链接和本声明。