Android Rx 实际应用

01.最普通的案例分析

  • 如下所示,指定线程控制后简单的调用。

    • 第一种方式
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    MovieModel model = MovieModel.getInstance();
    Disposable subscribe = model.getHomePage()
    //线程控制(也称为调度 / 切换),即讲解功能性操作符中的:subscribeOn() & observeOn()
    //功能性操作符subscribeOn() & observeOn()作用
    //线程控制,即指定 被观察者 (Observable) / 观察者(Observer) 的工作线程类型
    // 1. 指定被观察者 生产事件的线程
    .subscribeOn(Schedulers.io())
    // 2. 指定观察者 接收 & 响应事件的线程
    .observeOn(AndroidSchedulers.mainThread())
    // 3. 最后再通过订阅(subscribe)连接观察者和被观察者
    .subscribe(new Consumer<MovieBean>() {
    @Override
    public void accept(MovieBean movieBean) throws Exception {
    LogUtils.e(TAG+"----"+"accept(MovieBean movieBean)");
    if (movieBean != null && movieBean.getRet() != null) {
    mView.setAdapterData(movieBean);
    }
    }
    }, new Consumer<Throwable>() {
    @Override
    public void accept(Throwable throwable) throws Exception {
    LogUtils.e(TAG+"----"+"accept(Throwable throwable)");
    }
    }, new Action() {
    @Override
    public void run() throws Exception {
    LogUtils.e(TAG+"----"+"run()");
    }
    }, new Consumer<Disposable>() {
    @Override
    public void accept(Disposable disposable) throws Exception {
    LogUtils.e(TAG+"----"+"accept(Disposable disposable)");
    }
    });
    mSubscriptions.add(subscribe);
阅读更多

Android 选择合适路由

01.选择那个开源路由库

  • 比较有代表性的组件化开源框架有得到得到DDComponentForAndroid、阿里Arouter、聚美Router 等等。
    • 得到DDComponentForAndroid:一套完整有效的android组件化方案,支持组件的组件完全隔离、单独调试、集成调试、组件交互、UI跳转、动态加载卸载等功能。
    • 阿里Arouter:对页面、服务提供路由功能的中间件,简单且够用好用,网上的使用介绍博客也很多,在该组件化案例中,我就是使用这个。
阅读更多

数据库系统原理

一、事务

概念

事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。

image-20191207222237925

ACID

1. 原子性(Atomicity)

事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。

阅读更多

git 用法

集中式与分布式

Git 属于分布式版本控制系统,而 SVN 属于集中式。

image-20191208200656794

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。

集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。

集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。

阅读更多

Android 组件化填坑

01.Fragment通信难点

  • 在网上看到很多博客说,如何拆分组件,按模块拆分,或者按照功能拆分。但很少有提到fragment在拆分组件时的疑问,这个让我很奇怪。
  • 先来说一个业务需求,比如一个购物商城app,有4个模块,做法一般是一个activity+4个fragment,这个大家都很熟悉,这四个模块分别是:首页,发现,购物车,我的。然后这几个页面是用fragment写的,共用一个宿主activity,那么在做组件化的时候,我想把它按照业务拆分成首页,发现,购物车和我的四个独立的业务模块。
阅读更多

Android 组件化案例

01.组件化实践开源项目

  • 关于组件化开发一点感想
    • 关于网上有许多关于组件化的博客,讲解了什么是组件化,为何要组件化,以及组件化的好处。大多数文章提供了组件化的思路,给我着手组件化开发提供了大量的便利。感谢前辈大神的分享!虽然有一些收获,但是很少有文章能够给出一个整体且有效的方案,或者一个具体的Demo。
    • 但是毕竟看博客也是为了实践做准备,当着手将之前的开源案例改版成组件化案例时,出现了大量的问题,也解决了一些问题。主要是学些了组件化开发流程。
    • 大多数公司慢慢着手组件化开发,在小公司,有的人由于之前没有做过组件化开发,尝试组件化也是挺好的;在大公司,有的人一去只是负责某个模块,可能刚开始组件化已经有人弄好了,那学习实践组件化那更快一些。业余实践,改版之前开源项目,写了这篇博客,耗费我不少时间,要是对你有些帮助,那我就很开心呢。由于我也是个小人物,所以写的不好,勿喷,欢迎提出建议!
阅读更多

Android 组件化框架

01.传统APP架构图

  • 传统APP架构图
    • 如图所示,从网上摘来的……
    • image
  • 存在的问题
    • 普遍使用的 Android APP 技术架构,往往是在一个界面中存在大量的业务逻辑,而业务逻辑中充斥着各种网络请求、数据操作等行为,整个项目中也没有模块的概念,只有简单的以业务逻辑划分的文件夹,并且业务之间也是直接相互调用、高度耦合在一起的。单一工程模型下的业务关系,总的来说就是:你中有我,我中有你,相互依赖,无法分离。如下图:
阅读更多

Android 组件化概念

01.什么是组件化

  • 什么是组件化呢?
    • 组件(Component)是对数据和方法的简单封装,功能单一,高内聚,并且是业务能划分的最小粒度。
    • 组件化是基于组件可重用的目的上,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件,使得整个软件系统也做到电路板一样,是单个或多个组件元件组装起来,哪个组件坏了,整个系统可继续运行,而不出现崩溃或不正常现象,做到更少的耦合和更高的内聚。

02.区分模块化与组件化

阅读更多

Android 为何组件化

01.为何组件化

  • APP迭代维护成本增高
    • 投资界,新芽,项目工厂等APP自身在飞速发展,版本不断迭代,新功能不断增加,业务模块数量不断增加,业务上的处理逻辑越变越复杂,同时每个模块代码也变得越来越多,这就引发一个问题,所维护的代码成本越来越高,稍微一改动可能就牵一发而动全身,改个小的功能点就需要回归整个APP测试,这就对开发和维护带来很大的挑战。
  • 多人组合需要组件化
    • APP 架构方式是单一工程模式,业务规模扩大,随之带来的是团队规模扩大,那就涉及到多人协作问题,每个移动端软件开发人员势必要熟悉如此之多代码,如果不按照一定的模块组件机制去划分,将很难进行多人协作开发,随着单一项目变大,而且Andorid项目在编译代码方面就会变得非常卡顿,在单一工程代码耦合严重,每修改一处代码后都需要重新编译打包测试,导致非常耗时。
阅读更多