MVP解绑

来源:互联网 发布:分配算法 编辑:程序博客网 时间:2024/06/11 18:41
public interface lhModel {    void  loadData(HomeDataCallback callback);    interface  HomeDataCallback{         void complete(List name);    }}
public class HomeModel implements lhModel {    @Override    public void loadData(HomeDataCallback callback) {        List  list = new ArrayList();        for (int i = 0;i<30;i++){            list.add("数据"+i);        }        callback.complete(list);    }}
public interface  IPresenter<T> {    void attach(T view);    void detach();}
public class Homepersenter implements IPresenter<HmView> {    private HomeModel model;    //双层保证 不会出现内存泄漏    //1、软引用  在内存不足时会回收   如果Activity意外终止 使用该方式能保证    public WeakReference<HmView>  mRefView;    //2、通过手动的方式直接释放  activity销毁时直接回收    public Homepersenter(HmView view) {        this.model = new HomeModel();        attach(view);    }    //进行和View层的绑定  activity    @Override    public void attach(HmView view) {       mRefView = new WeakReference<HmView>(view);    }    //和View层解绑    @Override    public void detach() {        mRefView.clear();        Log.e("info","解绑");    }    public  void  showListData(){        model.loadData(new lhModel.HomeDataCallback() {            @Override            public void complete(List list) {                mRefView.get().showListData(list);            }        });    }}
public interface HmView {    void showListData(List name);}
 
public class MainActivity extends AppCompatActivity implements HmView {    private Homepersenter persenter;    private ListView lv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lv = (ListView) findViewById(R.id.lv);        persenter = new Homepersenter(this);        persenter.showListData();    }    @Override    public void showListData(List name) {        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,name);        lv.setAdapter(adapter);    }    @Override    protected void onDestroy() {        super.onDestroy();        persenter.detach();    }}









原创粉丝点击