rxjava封装,RxBus封装(上线项目集成,声明周期管理,无内存溢出内存,支持同时多个请求。)

  Github地址

RxLibrary工程:
1.rxjava2 + retrofit2的封装,常用的请求(Get,Post,文件上传,文件下载),简单便捷,支持自定义loading等属性。
2.RxBus的使用,用法完全与EvenBus一样。

效果图

集成

compile ‘com.bhm.sdk.rxlibrary:RxLibrary:2.3.1‘

或者

<dependency>
  <groupId>com.bhm.sdk.rxlibrary</groupId>
  <artifactId>RxLibrary</artifactId>
  <version>2.3.1</version>
  <type>pom</type>
</dependency>

一、rxjava2 + retrofit2的使用

强烈建议参考demo,MianActivity包含了常用的用法及用法介绍。    
第一步,继承RxBaseActivity或者RxBaseFragment,添加内存管理的机制,同时获取rxManager对象,rxManager是管理观察者的类,当取消请求、中断请求等可调用对应的方法。注意:如果项目BaseActivity继承了别的Activity,则需在BaseActivity中添加RxAppCompatActivity的代码,并且生成RxManager对象,Fragment同理哦。    
第二步,使用。

    RxBuilder builder = RxBuilder.newBuilder(this)
            //.setLoadingDialog(RxLoadingDialog.getDefaultDialog())
            .setLoadingDialog(new MyLoadingDialog())
            .setDialogAttribute(true, false, false)
            //.setHttpTimeOut()
            .setIsLogOutPut(false)//默认是true
            .setIsDefaultToast(true, rxManager)
            .bindRx();
    builder.createApi(HttpApi.class, Host)
            .getData("Bearer aedfc1246d0b4c3f046be2d50b34d6ff", "1")
            .compose(bindToLifecycle())//管理生命周期
            .compose(RxManager.rxSchedulerHelper())//发布事件io线程
            .subscribe(new RxObserver<Object>(builder) {//Object可以替换成实体类,无需再解析
                //根据业务需要,可继承RxObserver重写类,对onFail和onSuccess进行解析,根据resultCode进行处理
                @Override
                public void onStart(Disposable disposable) {

                }

                @Override
                public void onSuccess(Object response) {
                    Log.i("onSuccess-------> ", response.toString());
                }

                @Override
                public void onDone() {

                }

                @Override
                public void onFail(Throwable t) {

                }
            });

HttpApi是一个接口,getData是HttpApi中的方法。
   Host 为域名。

以下介绍下HttpApi中常用注解的使用:

    1.get请求:方法前添加@GET("url"),参数 @Query、@QueryMap
    <br>例(url和域名拼接好后组成完整链接,当然我们不需要自己拼接,Retrofit会处理)</br>
    @GET("福利/10/1")
    Observable<Object> getData(@Header("token") String token, @Query("type")  String type);
    2.post请求:方法前添加@FormUrlEncoded和@POST("url")
      Observable<Object> getDataPost(@Field("once") boolean once_no);
    3.文件上传:方法前添加@Multipart和@POST("url")
        Observable<Object> upload(
        @Header("token") String token,
        @Part("filename") RequestBody description,
        @Part("id") RequestBody id,
        @Part MultipartBody.Part file);
       其中RequestBody的生成:
       RequestBody.create(MediaType.parse("text/plain"),"id"
       MultipartBody.Part的生成:
       RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpeg; charset=UTF-8"),file);
       MultipartBody.Part part= MultipartBody.Part.createFormData("file", file.getName(), requestBody);
    4.文件下载:方法前添加@Streaming和@GET
    @Streaming
    @GET
    Observable<ResponseBody> downLoad(@Url String url);
    其中@GET后不需指定url,参数@Url指定了完整的url,所以也不需域名Host的指定。

二、RxBus的使用

1.订阅RxBus.get().register(this);

一般在activity/fragment的oncreate方法中添加

2.取消订阅RxBus.get().unRegister(this);

 一般在activity/fragment的的ondestory方法添加

3.接收event,处理

在activity/fragment中添加如下方法

@Subscribe(code = 1111,threadMode = ThreadMode.MAIN)
public void rxBusEvent(Entity entity){
    if(null != entity){
    Toast.makeText(this, "RxBus改变了MainActivity的标题", Toast.LENGTH_SHORT).show();
    }
}

threadMode:MAIN,NEW_THREAD,CURRENT_THREAD(默认)

4.在任意一个地方发送

  RxBus.get().send(1111, entity);

原文地址:https://www.cnblogs.com/bhm666/p/9055957.html

时间: 2024-10-01 05:59:53

rxjava封装,RxBus封装(上线项目集成,声明周期管理,无内存溢出内存,支持同时多个请求。)的相关文章

项目全生命周期管理

原文地址:https://www.cnblogs.com/-levi/p/11401955.html

助力绵阳市商业银行,打造高效项目生命周期管理平台

金融市场捷报连连,近日,TechExcel公司再次凭借产品和服务实力直签下绵阳市商业银行,打造项目全生命周期管理平台.DevSuite研发与项目管理平台为绵阳市商业银行员工提供了一套必不可少的信息化工具,大大提升研发管理效率. 绵阳市商业银行(绵阳市商业银行股份有限公司)是国有控股地方商业银行,成立于2000年9月,是中国(绵阳)科技城唯一一家国有控股法人金融机构.成立至今,绵阳市商业银行秉承"服务地方.服务中小"的企业宗旨,全力打造一流中小企业金融服务机构,不断开创科学发展新局面.2

ios 开发之个人appStore上线项目分享-1封装自定义的表情键盘

如何封装一个类似于微信的表情录音键盘呢? 实现这种键盘需要用到如下的知识: 通知传值,block 传值,委托模式,coreData缓存最近的使用记录, 使用autolayout自动布局,键盘动画, 制作 plist 文件 属性字符串AttributeString .录音AVFoundation框架 下载地址: 蜜聊Love  https://itunes.apple.com/cn/app/mi-liaolove/id939936656?mt=8 原文出处:http://blog.csdn.net

Spring学习(一)tomcat加载web.xml、以及项目集成Spring支持

tomcat容器加载web.xml 一. 1 .启动一个 WEB 项目的时候, WEB 容器会去读取它的配置文件 web.xml ,读取 <listener> 和 <context-param> 两个结点. 2 .紧急着,容创建一个 ServletContext ( servlet 上下文),这个 web 项目的所有部分都将共享这个上下文. 3 .容器将 <context-param> 转换为键值对,并交给 servletContext . 4 .容器创建 <li

通用DAO之MyBatis封装,封装通用的增删改查(二)

曾经发过一篇文章,大概写的就是阿海多么多么厉害,见到某位同事在Hibernate的基础上封装了一下,就以一己之力开发什么什么框架,最后写了个超大的一坨的事. 那么,后续篇来了.阿海不是自负之人,当之前的CRUD框架并没有达到理想的结果时,阿海转向了Mybatis封装.别问我为什么不是Hibernate.我本来就不喜欢Hibernate,即使在之前的一家公司一直被强制性的约束使用Hibernate时,也没有对Hibernate产生什么真正的好感,反而屡次发现了Hibernate的一些问题. 或许是

全程真实数据对接 带你从0开发前后端分离的企业级上线项目

<ignore_js_op> 第1章 课程介绍(2018配套教程:电商前端+电商后端+电商权限管理系统课程)本章中会先让大家了解课程整体情况,然后手把手带大家做一些开发前的准备工作.后台管理系统测试账号和密码(切勿修改,导致其他同学体验不了)        账号:admin 密码:admin (Java一期课程ID:96,Java二期进阶课程ID:162,权限系统课程:ID:149,http://coding.imooc.com/class/XXX.html ,访问时将前面网站中的XXX换成.

C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)

封装: 封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型. 封装的意义在于保护或者防止代码(数据)被我们无意中破坏. 封装既可以封装成员变量,又可以封装成员方法 ===================================================================================================== 封装成员变量 封装步骤: 1.新建类-- 面向对象最基本的单元就是类,即一个.cs文件,

SpringMVC将一个项目集成在另一个项目中

将KissfloveUtil项目集成在自己项目中.在pom.xml中加入以下配置: <dependencies> <dependency> <groupId>com.kissflove</groupId> <artifactId>kissfloveUtil</artifactId> <version>0.0.1</version> </dependency> </dependencies>

人生第一个上线项目总结

此时,项目公测第一天,项目组集体坐在公司值班,等待着用户反馈,鉴于之前已经做过为期半个月的内测,于是,公测的第一天晚上似乎不是多么紧张. 毕业后,就进入现在公司,开始了现在项目.历时一年,很快.快结束的现在,总觉得自己应该总结下这一年发生的事情,于是,便记在这里,供自己"回眸".从程序员的角度看问题,更多. 使用技术:服务器,Linux + Java:客户端,Unity3D(主要NGUI). 项目框架: 服务器 客户端 1.登录服务器. 2.主要服务器M. 3.服务器G. 4.服务器D