MVP项目研究——BaseActivity实现基本数据的绑定与释放
来源:互联网 发布:mac音频播放器 编辑:程序博客网 时间:2024/06/07 21:25
一、本类API
- 类
- 泛型传入Presenter(继承自IPresenter)
- 继承RxAppCompatActivity进行生命周期管理
- 实现IActivity
- 方法
- onCreate butternife的绑定
- onDestroy()释放资源
- useEventBus()默认true
- useFragment() 默认true
在创建BaseActivity前,我们先创建一个Presenter的接口和Activity的接口
二、创建interface IPresenter,IActivity
public interface IPresenter { void onStart(); void onDestroy();}//下面是IActivity的接口package com.daqsoft.ybarms.base.delegate;import android.os.Bundle;/** * Created by yanbo on 2017/7/26. * Activity的接口包括 * 1、useEventBus() * 2、initView(Bundle savedInstanceState) * 返回0则不会调用setContentView * 3、initData(Bundle savedInstanceState) * 4、useFragment() * 这个Activity是否会使用Fragment,框架会根据这个属性判断是否注册FragmentManager.FragmentLifecycleCallbacks * 如果返回false那意味着这个Activity不需要绑定Fragment,那你再在这个Activity中绑定继承于BaseFragment的Fragment将不起任何作用 * */public interface IActivity { boolean useFragment(); boolean useEventBus(); int initView(Bundle savedInstanceState); void initData(Bundle savedInstanceState);}
三、 BaseActivity代码
package com.daqsoft.ybarms.base;import android.content.Context;import android.os.Bundle;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;import com.daqsoft.ybarms.base.delegate.IActivity;import com.daqsoft.ybarms.mvp.IPresenter;import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;import javax.inject.Inject;import butterknife.ButterKnife;import butterknife.Unbinder;/** * Created by yanbo on 2017/7/26. * 泛型传入Presenter(继承自IPresenter) * 继承RxAppCompatActivity进行生命周期管理 * 实现IActivity */public abstract class BaseActivity<P extends IPresenter> extends RxAppCompatActivity implements IActivity { private Unbinder mUnbinder; @Inject protected P mPresenter; /** * -------------------------------------------------butternife的绑定 */ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { int layoutResID = initView(savedInstanceState); if (layoutResID != 0) {//如果initView返回0,框架则不会调用setContentView(),当然也不会 Bind ButterKnife setContentView(layoutResID); //绑定到butterknife mUnbinder = ButterKnife.bind(this); } } catch (Exception e) { e.printStackTrace(); } initData(savedInstanceState); } /** * -------------------------------------------------的释放资源 * butternife * mPresenter */ @Override protected void onDestroy() { super.onDestroy(); if (mUnbinder != null && mUnbinder != Unbinder.EMPTY) mUnbinder.unbind(); this.mUnbinder = null; if (mPresenter != null) mPresenter.onDestroy();//释放资源 this.mPresenter = null; } /** * 是否使用eventBus,默认为使用(true), * * @return */ @Override public boolean useEventBus() { return true; } /** * 这个Activity是否会使用Fragment,框架会根据这个属性判断是否注册{android.support.v4.app.FragmentManager.FragmentLifecycleCallbacks} * 如果返回false,那意味着这个Activity不需要绑定Fragment,那你再在这个Activity中绑定继承于 {BaseFragment} 的Fragment将不起任何作用 * * @return */ @Override public boolean useFragment() { return true; }}
阅读全文
0 0
- MVP项目研究——BaseActivity实现基本数据的绑定与释放
- 【MVP】BaseActivity里面的内容
- MVP项目研究——我的Android项目的开始(一些配置的管理)
- Android中基类BaseActivity的设计与实现
- MVP项目研究——AppManager融合Dagger2和androidEventbus管理Activity的生命周期
- MVP模式及BaseActivity的简单封装
- Android 项目开发必备-BaseActivity与Fragment的建立
- 数据连接池的研究与实现
- 适用于简单项目的BaseActivity
- mvp的基本登录(简单实现)
- BaseActivity与BaseFragment的封装
- 继承与BaseActivity的抽取
- BaseActivity与BaseFragment的封装
- 《EasyUI》——给DataGrid动态绑定表头和数据,实现表头与数据的真正解耦
- SpringMVC数据绑定1 之 基本对象、数组、包装类与集合的绑定
- 面向地学数据的数据挖掘研究与实现
- MVP架构基本实现
- d3.js——选择集与数据的绑定
- Virustotal——上传样本保存扫描结果
- EasyUI学习总结(二)——EasyUI布局
- java注解应用实例
- 输出某个文件夹下面的所有文件名 后缀 及路径(linux)
- C语言:常用字符串操作
- MVP项目研究——BaseActivity实现基本数据的绑定与释放
- BZOJ4443
- imindmap之云朵技巧
- 数据库sql及索引优化
- 关于C++条件编译的细节
- selenium CSS定位方式
- 菱形继承
- 阿里云全球十四个节点评测分析及服务器地域选择攻略
- mysql查出所有的列名