HelperLib 一套适合敏捷开发,基于MVP模式开发框架

网友投稿 648 2022-11-01

HelperLib 一套适合敏捷开发,基于MVP模式开发框架

HelperLib 一套适合敏捷开发,基于MVP模式开发框架

简介

基于MVP模式开发框架,整合Rxjava+Retrofit+Dagger+Butterknife等主流模块,加入中一些比较常用的工具类,进行一些抽取和整合。该框架主要是轻量级,少冗余,可扩展性高一些。demo给出相应的架构例子,可自行-查看。如果你觉得框架的某些代码有帮助到你,请你star支持一下,作者会一直维护,非常感谢!

1. 准备工作

1.1 依赖Library

远程依赖

在根目录的build.gradle中加入

allprojects { repositories { ... maven { url 'https://jitpack.io' } } }

在主项目app的build.gradle中依赖

dependencies { //x.x.x自行更换最新版本 implementation 'com.github.zhanghacker:MVPHabit:x.x.x' }

或本地依赖

-例子程序,在主项目app的build.gradle中依赖例子程序中的MVPHabit:

dependencies { ... implementation project(':MVPHabit') }

如果不是远程依赖,而是-的例子程序,那么还需要将例子程序中的config.gradle放入你的主项目根目录中,然后在根目录build.gradle的第一行加入:

apply from: "config.gradle"

2. 快速上手

2.1 初始化项目

//初始化项目在Applicatin里面调用 HelperConfig.init(this) //文件名称:"MVPHabit-Exception-"+time + ".txt" 文件名称 //默认路径:SDCard/Android/data/你的应用包名/cache/目录 ->默认的扑捉异常路径 .addCrashException() //自定义文件或路径 //T->file或crashDirPath //M->捕捉回调方法 .addCrashException(T,M);

2.2 第一个Activity

MVP大家应该比较熟悉,我们把MP合并P,只用到VP。正常的MVP要有TestActivity、Testcontract、Testpresenter;如果你集成dagger要多两个Testcompanet、TestModule(瞄一眼上面个个类名称,等下下面例子会用到哦)。建议使用:dagger,接下来例子也是按这个来举例。

注意:如果你使用dagger,请自行在app的buidle.gradle添加

annotationProcessor 'com.google.dagger:dagger-compiler:2.17'

2.2.1 继承Base

TestActivityr继承BaseDaggerActivity

public class TestActivity extends BaseDaggerActivity implements TestContract.View { ......}

BaseDaggerActivity是一个抽象类,需要传入一个泛型参数,就是上面TestPresenter参数 重写BaseDaggerActivity三个抽象方法,还有几个可选方法

@Overridepublic int getContentLayout() { //必须实现方法 return R.layout.activity_test;}@Overrideprotected void initInjector() { super.initInjector(); //可选实现方法,如果有传入TestPresenter就可以在此方法注入注解 DaggerTestComponent.builder() .testModule(new TestModule(this)) .build().inject(this);}@Overridepublic void bindView(View view, Bundle savedInstanceState) { //必须实现方法}@Overridepublic void initData() { //必须实现方法}

TestPresenter继承BasePresenter

public class TestPresenter extends BasePresenter implements TestContract.Presenter { private TestContract.View mView; @Inject public TestPresenter(TestContract.View view) { this.mView = view; } @Override public void getData() { }}

Fragment的使用和Activity的使用方法差不多,如果不懂详细请参考demo。

2.3 Testpresenter中的网络请求方法

//mCompositeDisposable管理生命周期,只要添加进去,其它交给BaseDaggerActivity去处理mCompositeDisposable.add(SingletonRxRetrofit.getInstance() .getApi().login("15880858837") .compose(RxUtils.schedulersTransformer()) .subscribe((String entity) -> mView.loadDataSuccess(entity), ex -> mView.loadDataSuccess(ex.toString())))

@BindView(R.id.button)Button mButton;@BindView(R.id.textView)TextView mTextView;@OnClick(R.id.button)public void onViewClicked() {}

无需再去 unbinder =ButterKnife.bind(this, view)、 unbinder.unbind();

注意:使用如果你使用butterknife,请自行在app的buidle.gradle添加

annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

2.5 网络工具的配置

//请求案例//使用有种方式://1.如果有使用注解框架 比如:dagger框架,写在全局application的Module使用设置成单例//2.自行写一个单例工具类UserApi userApi = RetrofitUtil.Builde.create("http://xxx.xxx.xx.xx:8011/") .addCustomConverter(T)//添加插值器,对数据解析进行拦截处理 .addCustomInterceptor(T,E)//添加-,对请求,和接收进行处理 .addSSL()//添加https验证 .addSSL("SSL的ca证书字符串")//添加https验证 .addCookiePersistence()//添加持久化 .build(UserApi.class); userApi.login(mobile,password) .compose(RxUtils.schedulersTransformer()) .subscribe(entity->{ Log.e("tag",entity); },ex->{ Log.e("tag",ex.toString()); });

3. 辅助工具内容

SP(SharedPreferences工具)T(Toast吐司工具)RegexUtils(正则表达工具)PermissionsTool(权限申请工具)SizeUtils.(尺寸相关工具)KeyboardUtils(软键盘工具)EncodeUtils(编码工具)EncryptUtils(解密解密工具)ImageUtils(图片操作工具)CrashUtils(异常捕捉工作)

混淆

请参考MVPHabit目录下的proguard-rules.pro文件,包含MVPHabit中依赖的所有第三方library。

可参考博文

Android - Dagger2使用详解

继续更新中...

About us

喜欢尝鲜,主要从事安卓,业余时间搞搞GoWeb(个人博客正在建站中),小程序等。对于项目我会一直更新维护,如果你感兴趣,请star一下。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:modern-server:包含HTTP/2和Let's Encrypt的基本Web服务器框架
下一篇:Android启动任务调度框架,用于缩短app启动时间
相关文章

 发表评论

暂时没有评论,来抢沙发吧~