zoukankan      html  css  js  c++  java
  • ProxyImpl 类

    package com.test.mvp.mvpdemo.mvp.v7.proxy;

    import com.test.mvp.mvpdemo.mvp.v7.basemvp.BasePresenter;
    import com.test.mvp.mvpdemo.mvp.v7.basemvp.IBaseView;
    import com.test.mvp.mvpdemo.mvp.v7.inject.InjectPresenter;
    import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.List;

    public class ProxyImpl implements IProxy {

    private IBaseView mView;
    private List<BasePresenter> mInjectPresenters;

    public ProxyImpl(IBaseView view) {
    this.mView = view;
    mInjectPresenters = new ArrayList<>();
    }

    @SuppressWarnings({"unchecked", "TryWithIdenticalCatches"})
    @Override
    public void bindPresenter() {
    //获得已经申明的变量,包括私有的
    Field[] fields = mView.getClass().getDeclaredFields();
    for (Field field : fields) {
    //获取变量上面的注解类型
    InjectPresenter injectPresenter = field.getAnnotation(InjectPresenter.class);
    if (injectPresenter != null) {
    try {
    Class<? extends BasePresenter> type = (Class<? extends BasePresenter>) field.getType();
    BasePresenter mInjectPresenter = type.newInstance();
    mInjectPresenter.attach(mView);
    field.setAccessible(true);
    field.set(mView, mInjectPresenter);
    mInjectPresenters.add(mInjectPresenter);
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (InstantiationException e) {
    e.printStackTrace();
    } catch (ClassCastException e) {
    e.printStackTrace();
    throw new RuntimeException("SubClass must extends Class:BasePresenter");
    }
    }
    }
    }

    @Override
    public void unbindPresenter() {
    /**
    * 解绑,避免内存泄漏
    */
    for (BasePresenter presenter : mInjectPresenters) {
    presenter.detach();
    }
    mInjectPresenters.clear();
    mInjectPresenters = null;
    }
    }
    --------------------- 

  • 相关阅读:
    本地复现Zabbix v2.2.x, 3.0.0-3.0.3 jsrpc 参数 profileIdx2 SQL 注入漏洞
    本地搭建复现st2-045漏洞
    Ubuntu安装Vulapps漏洞靶场
    如何在腾讯云Ubuntu服务器安装kali下的神器
    nginx 跳转配置
    Chocolatey 的安装
    MySQL 5.1 主从同步配置
    针对Windows Server 2008 Web 服务 IIS+php 配置的一些心得
    解决IIS7+php的组合上传限制30M的问题
    ssh 文件权限影响登录
  • 原文地址:https://www.cnblogs.com/ly570/p/11299108.html
Copyright © 2011-2022 走看看