Android 依赖注入详解

01.什么是依赖注入

  • 有哪些注入的方式可以解耦
    • 举个例子,假如我们的Presenter层需要用网络的数据或数据库的数据,但presenter本身没有请求网络的功能,那么它要依赖model层去请求网络,所以它就需要持有model层的一个实例,我们可以直接通过new的方式去创建,但是这样会使代码耦合严重,那么我们就可以通过一些解耦的手段去让presenter层持有model的引用,比如通过构造方法注入、set方法注入、配置文件注入、注解注入等等,只要达到我们的目的就是好的。
阅读更多

Android 如何生成路由映射文件

01.前沿介绍

  • 在Activity类上加上@Router注解之后,便可通过apt来生成对应的路由表,那么这节就来讲述一下如何通过apt来生成路由表。
  • APT是Annotation Processing Tool的简称,即注解处理工具。它是在编译期对代码中指定的注解进行解析,然后做一些其他处理(如通过javapoet生成新的Java文件)。
  • 整个生成映射文件,大都是仿照阿里ARouter路由器。这里学习使用!

02.定义注解处理器

阅读更多

Android 框架设计与初始化与配置

01.看阿里ARouter整体设计

  • ARouter主要由三部分组成,包括对外提供的api调用模块、注解模块以及编译时通过注解生产相关的类模块。
    • arouter-annotation注解的声明和信息存储类的模块
    • arouter-compiler编译期解析注解信息并生成相应类以便进行注入的模块
    • arouter-api核心调用Api功能的模块
  • annotation模块
阅读更多

Android 通过Router注解实现路由跳转

01.首先看ARouter注解实现方案

  • 如下所示

    1
    2
    3
    4
    5
    6
    7
    8
    //首先通过注解添加下面代码
    @Router(path = "/test/TestActivity")
    public class TestActivity extends BaseActivity {

    }

    //跳转
    ARouter.getsInstance().build("/test/TestActivity").navigation();
阅读更多

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进程启动的。
阅读更多