Android 设计路由条件

01.为何需要路由

  • 这个问题其实我们之前谈到过,而且有过组件化实践或者尝试的朋友一定有切身感受。明确一个前提:各个业务模块之间不会是相互隔离而是必然存在一些交互的;
    • 在Module A需要跳转到Module B某界面,而我们一般都是使用强引用的Class显式的调用;
    • 在Module A需要调用Module B提供的方法,例如别的Module调用用户模块退出登录的方法;
  • 这两种调用形式大家很容易明白,正常开发中大家也是毫不犹豫的调用。但是我们在组件化开发的时候却有很大的问题:
阅读更多

Android ARouter 路由解析

01.原生跳转实现

  • Google提供的原声路由主要是通过intent,可以分成显示和隐式两种。显示的方案会导致类之间的直接依赖问题,耦合严重;隐式intent需要的配置清单中统一声明,首先有个暴露的问题,另外在多模块开发中协作也比较困难。只要调用startActivity后面的环节我们就无法控制了,在出现错误时无能为力。

02.实现组件跳转方式

2.1 传统跳转方式

阅读更多

Android 技术架构

1.Android技术架构有哪几种

  • MVC
    • MVC全名是Model View Controller,如图,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
  • MVP
    • MVP从更早的MVC框架演变过来,与MVC有一定的相似性:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
阅读更多

Android 组件化开发实践和案例分享

1.为什么要组件化

1.1 为什么要组件化

  • APP迭代维护成本增高
    • 投资界,新芽,项目工厂等APP自身在飞速发展,版本不断迭代,新功能不断增加,业务模块数量不断增加,业务上的处理逻辑越变越复杂,同时每个模块代码也变得越来越多,这就引发一个问题,所维护的代码成本越来越高,稍微一改动可能就牵一发而动全身,改个小的功能点就需要回归整个APP测试,这就对开发和维护带来很大的挑战。
阅读更多

Android SnapHelper 源码深度解析

01.SnapHelper简单介绍

1.1 SnapHelper作用

  • 在某些场景下,卡片列表滑动浏览[有的叫轮播图],希望当滑动停止时可以将当前卡片停留在屏幕某个位置,比如停在左边,以吸引用户的焦点。那么可以使用RecyclerView + Snaphelper来实现,SnapHelper旨在支持RecyclerView的对齐方式,也就是通过计算对齐RecyclerView中TargetView 的指定点或者容器中的任何像素点。
阅读更多

Android App 启动流程

1.什么是Zygote进程

1.1 简单介绍

  • Zygote进程是所有的android进程的父进程,包括SystemServer和各种应用进程都是通过Zygote进程fork出来的。Zygote(孵化)进程相当于是android系统的根进程,后面所有的进程都是通过这个进程fork出来的
  • 虽然Zygote进程相当于Android系统的根进程,但是事实上它也是由Linux系统的init进程启动的。
阅读更多

Android EventBus 用法及源码解析

1.EventBus简介

1.1 EventBus的三要素

  • Event:事件
    可以是任意类型的对象。
  • Subscriber:事件订阅者
    在EventBus3.0之前,消息处理的方法只能限定于onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,他们分别代表四种线程模型。
    在EventBus3.0之后,事件处理的方法可以随便取名,但是需要添加一个注解@Subscribe,并且要指定线程模型(默认为POSTING),四种线程模型下面会讲到。
阅读更多

Android LruCache 和 DiskLruCache 源码分析

01.图片缓存策略

1.1 两级缓存

  • 现在主流的app中图片等资源的缓存策略一般是分两级,一个是内存级别的缓存,一个是磁盘级别的缓存。
  • 作为android系统的维护者google也开源了其缓存方案,LruCache和DiskLruCache。
    • 从android3.1开始LruCache已经作为android源码的一部分维护在android系统中,为了兼容以前的版本android的support-v4包也提供了LruCache的维护,如果App需要兼容到android3.1之前的版本就需要使用support-v4包中的LruCache,如果不需要兼容到android3.1则直接使用android源码中的LruCache即可。
阅读更多

Android Retrofit 源码分析

1.首先回顾Retrofit简单使用方法

  • Api接口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public interface DouBookApi {
    /**
    * 根据tag获取图书
    * @param tag 搜索关键字
    * @param count 一次请求的数目 最多100
    * https://api.douban.com/v2/book/search?tag=文学&start=0&count=30
    */
    @GET("v2/book/search")
    Observable<DouBookBean> getBook(@Query("tag") String tag,
    @Query("start") int start,
    @Query("count") int count);
    }
阅读更多

Android RecyclerView 用法和源码深度解析

1.RecycleView的结构

  • 关于RecyclerView,大家都已经很熟悉了,用途十分广泛,大概结构如下所示

    • RecyclerView.Adapter - 处理数据集合并负责绑定视图
    • ViewHolder - 持有所有的用于绑定数据或者需要操作的View
    • LayoutManager - 负责摆放视图等相关操作
    • ItemDecoration - 负责绘制Item附近的分割线
阅读更多