GithubHelp home page GithubHelp logo

basedemo's Introduction

欢迎使用 BaseDemo


BaseDemo采用MVP + 响应式编程(Rx),主要包括三个Module:

  • BaseProject
  • RxExtention
  • Demo

cmd-markdown-logo

其中: BaseProject封装了常用的网络请求(基于Retrofit和OkHttp)、Activity栈管理(通过ActivityLifecycleCallbacks)、图片管理(基于Glide)、基础组件、工具类等;

RxExtention增加了RxJava、RxAndroid,对BaseProject进行扩展;如果打算不使用Rx,可以不引用该Module;

Demo中以登录、注册、商品列表三块功能为例,展示了具体使用;XXXXContract作为契约接口,定义了各层需要实现的方法。


BaseProject

基础工程,需注意:

1. 网络请求&响应拦截

RequestInterceptor为请求拦截,ReceivedInterceptor为响应拦截,共通的拦截操作可在此处理,比如:添加统一的Header,计算并添加签名(鉴权)等。

2. 数据模型&解析

RequestBean为数据请求的基础模型,按项目实际返回结果调整; 如需调整数据解析,请修改FastJsonResponseBodyConverter。

RxExtention

扩展工程,需注意:

1. 生命周期

RxBasePresenter为Presenter基类,订阅了Activity/Framgment生命周期标记位(详见RxMvpBaseActivity中RxLifecycle的使用); 使用withRxLifecycle()方法(配合takeUntil操作符),可以设置在任一生命周期自动解绑,默认在onDestory时解绑,避免内存泄漏。

2. onError的共通处理

“登录失效”或是其它需要统一处理的Error,可以在RxActionImpl中定义;并在withOnError()方法中设置相应的逻辑。

Demo

需注意:

1. 初始化配置

在AppApplication中进行参数映射、配置拦截、工具初始化等操作。

2. 数据仓库

data文件下为各模块的数据仓库,如:CommRepository、UserRepository,不同模块的数据独立管理;XXXXImpl定义了仓库对外开放的接口。

其它

  • gradle.properties统一管理项目版本、编译版本、引用库的版本、第三方Appkey、Api地址
  • keystore.properties(docs文件夹下)配置签名文件地址、别名及密码
  • key文件夹下放置签名文件
  • Release版本需避免代码混淆的部分,请在主工程的proguard-rules.pro(常用的指令及规则可参考BaseProject工程的proguard-rules.pro)

basedemo's People

Contributors

ycyfyouyun avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.