01 Android架构设计
深入分析Android的架构思想,包括FrameWork源码分析,组件化、MVP、热修复、插件化、进程间通信等使用和源码分析,领略Android架构设计的原理
傅晨明
毕业于杭州电子科技大学
展开
-
Android开发中MVC、MVP到MVVM演化
有一个需求:需要查询用户账号信息,用户输入账号,点击按钮可进行查询账号信息,如果查询数据成功,则将数据展示在界面上;如果查询数据失败,则在界面上提升获取数据失败。一般模式NormalActivity获取用户输入信息展示获取信息成功页面展示获取信息失败页面查询用户数据业务逻辑...原创 2020-09-02 08:53:57 · 510 阅读 · 0 评论 -
Android 面向对象式数据库架构设计2-分库
Android 面向对象式数据库架构设计1文章目录1 User2 UserDao3 BaseDaoSubFactory4 PrivateDataBaseEnums5 UserImg6 PhotoDao7 使用在多用户的情况下,我们可以通过分库的方式,让不同的用户持有自己的一个数据库文件,类似QQ。1 UserQQ中只能有一个用户在线,所以需要一个参数来记录用户的状态。在改变下User中添...原创 2019-07-23 17:50:08 · 208 阅读 · 0 评论 -
Android开发效率提升十倍的利器-Gradle
Android开发效率提升十倍的利器-Gradle1 Gradle介绍1 语言和作用Gradle是一种自动化构建语言,是一种DSL(Domain Specific language),目前是Android的默认构建工具,还一个编程框架。Gradle特性语言:Groovy,先将其编译成java类字节码,然后通过JVM来执行这个java类。支持环境Android S...原创 2019-07-23 22:07:16 · 540 阅读 · 0 评论 -
Android反射1-基本反射技术
1.1基本反射技术反射包括以下技术:1、根据一个字符串得到一个类的对象。2、获取一个类的所有公用或私有、静态或实例的字段、方法、属性。3、对泛型类的反射。1.1.1 根据一个字符串得到一个类1.getClass通过一个对象,获取它的类型。类型用Class表示://通过getClass,每个Class都有这个函数String str = "abc";Class c1 = st...原创 2019-07-29 19:46:22 · 216 阅读 · 0 评论 -
Android greenDao简介和使用
Github地址:greenDAO1 简介1.1 ORM框架介绍对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间。映射的元数据,将程序中的对象自动持久化到关系数据库中。java中的类------------------------> 表java里面的类属性---------------> 字段java里面的类...原创 2019-07-22 11:20:14 · 209 阅读 · 0 评论 -
Android greenDa源码分析
greenDao源码架构图:greenDao流程图:在自定义的Application中对greenDao进行初始化操作,如下:public class App extends Application { private DaoSession daoSession; @Override public void onCreate() { super.o...原创 2019-07-22 16:30:05 · 240 阅读 · 0 评论 -
Android中Bitmap.Config
参考:https://blog.csdn.net/wangmy1988/article/details/83343200https://www.jianshu.com/p/04457671dec4 public enum Config { ALPHA_8 (1), RGB_565 (3), @Deprecated ARGB_4444 (4),...原创 2019-08-21 08:14:39 · 1720 阅读 · 0 评论 -
Activity 插件化-Hook Activity
文章目录1 Hook IActivityManager 方案实现2 Hook Instrumentation 方案实现四大组件的插件化是插件化技术的核心知识点,而 Activity 插件化更是重中之重,Activity 插件化主要有 3 种实现方式,分别是反射实现、接口实现和 Hook 技术实现。反射实现会对性能有所影响,主流的插件化框架没有采用此方式,关于接口实现可以阅读dynamic-loa...原创 2019-08-09 08:00:49 · 3001 阅读 · 0 评论 -
Android插件化1-插桩式-Activity插件化
1、插件化概述插件化属于动态加载技术动态加载技术:插件化、热修复动态加载技术:在应用程序运行时,动态加载一些程序中原本不存在的可执行文件并运行这些文件里的代码逻辑,可执行文件总的来说分为两个,一个是动态链接库so,另一种是dex相关文件(dex文件包含jar/apk文件)。插件化的作用:主要用于解决应用越来越庞大以及功能模块的解耦,所以小项目中一般用的不多。热修复:主要用于修复bug。...原创 2019-10-24 22:07:14 · 1061 阅读 · 0 评论 -
Android插件化3-插桩式-动态广播插件化
Android插件化1-插桩式-Activity插件化:https://blog.csdn.net/hongxue8888/article/details/98887680Android插件化2-插桩式-Service插件化:https://blog.csdn.net/hongxue8888/article/details/99165077文章目录1 概述2 动态广播插件化2.1 plugin...原创 2019-08-15 10:55:10 · 322 阅读 · 1 评论 -
Android插件化2-插桩式-Service插件化
Service和广播插件化ClassLoad家族,继承关系图DexClassLoader加载机制原理原创 2019-08-12 08:25:07 · 327 阅读 · 0 评论 -
Android 面向对象式数据库架构设计1
文章目录1 BaseDaoFactory2 IBaseDao3 两个注解4 javabean-User5 BaseDao5.1 实现IBaseDao接口5.2 创建表生成创建表的sql语句initCacheMap5.3 实现插入5.4 更新5.5 删除5.5 查询6 BaseDao的扩展greenDao的流程图:下面代码展示了数据库的使用: BaseDao baseDao = BaseDa...原创 2019-07-23 16:37:47 · 209 阅读 · 0 评论 -
Android AOP架构设计
1、 通过AspectJ框架, 实现aop架构设计2、模仿淘宝式登录1 什么是AOPAOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。1 ObjectOriented Programming:面向对象编程 把功能或问题模块化,每个模块处理自己的家务事 。2 AOP:1、Aspe...原创 2019-07-01 14:11:35 · 512 阅读 · 0 评论 -
理解Java和Android的ClassLoader
文章目录1 Java 中的 ClassLoader1.1 Classloader 的类型1.2 Classloader 的继承关系1.3 双亲委托模式1.4 自定义 Classloader2 Android 中的 ClassLoader2.1 Classloader 的类型2.1.1 BootClassloader2.1.2 DexClassloader2.1.3 PathClassloader2...原创 2019-07-05 11:22:06 · 449 阅读 · 0 评论 -
UML建模
UMI定义:是统一建模语言,是一种开放的方法,用于说明、可视化、构建和编写一个正在开发 的、面向对象的、软件密集系统的制品的开放方法。作用:1、帮助开发团队以一种可视化的方式理解系统的功能需求。2、有利于开发团队队员间在各个开发环节间确立沟通的标准,便于系统文档的制定和项 目的管理。因为UML的简单、直观和标准性,在一个团队中用UML来交流比用文字说 明的文档要好得多。3、UML为非专业...原创 2019-06-21 13:16:28 · 1157 阅读 · 0 评论 -
Android 消息机制
Android 的消息机制主要是指Handler得运行机制以上模型的解释:1.以Handler的sendMessage方法为例, 当发送一个消息后, 会将此消息加入消息队列MessageQueue中。2.Looper负责去遍历消息队列并且将队列中的消息分发给对应的Handler进行处理。3.在Handler的handleMessage方法中处理该消息, 这就完成了一个消息的发送和处理...原创 2019-07-01 14:26:35 · 181 阅读 · 0 评论 -
Java之注释(Annotation)
文章目录1 Annotation简介2 系统内建的Annotation2.1 @Override2.2 @Deprecated2.3 @SuppressWarnings3 自定义Annotation3.1 Annotation的定义格式3.1.1 定义简单的Annotation3.1.2 向Annotation中设置内容3.1.3 默认值3.1.4 使用枚举限制设置的内容3.2 Retention...原创 2019-05-19 16:58:19 · 657 阅读 · 0 评论 -
Android EventBus 架构设计
EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法1源码分析可以看到, 发布者(Publisher)使用post()方法将Event发送到Event Bus,而后Event Bus自动将Event发送到多个订阅者(Subcriber)1.1 Subscribe...原创 2019-07-03 14:01:56 · 1341 阅读 · 0 评论 -
Android 代理模式
随着泛型的引用,代理模式分为静态代理和动态代理两种,在插件化中分别表示为对Instrumentation和AMN进行Hook。1.1概述代理模式,也就是Proxy,比如Android系统源码中的ActivityManagerProxy。为其他对象提供一种代理以控制对这个对象的访问。代理模式的UML图,如图1-1所示。1.1.1 远程代理(AIDL)在Android系统中,远程代理的设计...原创 2019-07-04 09:10:27 · 176 阅读 · 0 评论 -
Android对startActivity方法进行Hook
Hook startActivity,可以启动一个没有在AndroidManifest中声明的Activity。1 startActivity方法的两种形式//第一个是Activity的startActivity方法startActivity(intent);//第二个是Context的startActivity方法getApplicationContext().startActivi...原创 2019-07-04 13:14:56 · 702 阅读 · 0 评论