洞察纵观鸿蒙next版本,如何凭借FinClip加强小程序的跨平台管理,确保企业在数字化转型中的高效运营和数据安全?
648
2022-11-01
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
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~