Android中的GC分析-Dalvik和ART虚拟机 Dalvik虚拟机 Dalvik Virtual Machine,简称Dalvik VM或者 DVM。DVM是Google专门为Android平台开发的虚拟机,是Android的重要组成部分,支持dex格式的Java应用程序运行。 dex格式是专门为DVM设计的一种压缩格式,适合内存和处理器速度有限的系统。 从架构图中可知,DVM运行在Android的运行时库层。 DVM与JVM的区别基于的 2018-05-13 Android
MVC,MVP,MVVM的理解 使用架构的目的是:模块内部的高内聚,模块之间的低耦合。 1.MVC模式MVC(Model-View-Controller,模型-视图-控制器)是20世纪80年代出现的一种设计模式。他用一种业务逻辑、数据、界面显示分离的方法组织代码。在Android中MVC的角色定义如下: Model(模型层):针对业务模型,建立的数据结构和相关的类,就可以理解为Model。与View无关,与业务相关。主要 2018-04-15 设计模式
进程保活介绍 进程保活 进程保活的方式分为两个层面:提高进程优先级,降低被杀死的概率,在进程被杀死后,进行拉活。 1. 进程的优先级 优先级最低的进程首先被杀死、进程的等级会因为其他进程的依赖而提高一个进程服务于另一个进程,则它的优先级不会比它服务的进程优先级低 按重要性分类: 前台进程:进程持有一个正在与用户交互的Activity或者和交互Activity绑定的Service,前台运行的Service( 2018-04-12 Android
设计模式--静态代理模式和动态代理模式原理及实现 代理模式(委托模式) 为其他对象提供一种代理以控制对这个对象的访问。引入代理对象来间接访问目标对象 代理模式优点: 职责清晰:真实的角色就是实现实际的业务逻辑,不需关心其他非本职责的事务 高扩展性:代理类可以在不做任何修改的情况下继续使用 智能化:动态代理演示 代理模式缺点: 在客户端和真实对象之间添加了代理,会造成请求的处理速度变慢 实现代理模式比较复杂,需要额外的工作 代理模式的扩 2018-04-09 设计模式
热修复基本原理 目前流行的热修复方案主要有以下三种: 代码修复 资源修复 动态链接库修复 本章主要讲述 第一种方案:代码修复。 代码修复 原理:对出现Bug的类进行修改或替换 类加载方案 核心思想:使用Android的类加载器,通过类加载器去加载已修复好Bug的Class并对有问题的Class进行覆盖。 加载完成后需要重启应用才可生效,因为当前在使用的类是无法卸载的即不可替换,只有重启后重新加载才可成 2018-04-07 Android
基础排序算法介绍 基础排序算法介绍知识点: 排序算法稳定性的定义:简单的介绍就是排序前相等的数据先后顺序在排序后的先后顺序位置相同 基本交换算法 12345private static void swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp;} 2018-03-20 算法
Fragment相关 Android中展示界面一般是通过Activity去实现的,当要实现类似商城类的首页时,就会拿出Fragment去实现对应的每个标签页,由Activity进行管理。 Fragment介绍Fragment存在必须依附于FragmentActivity使用,并且与FragmentActivity一样,拥有自己独立生命周期,同时可以处理用户的交互动作。并且可以在一个Activity中动态的添加、替 2018-01-10 Android
Android-DataBinding-Library分析 Android-DataBinding-GradlePlugin分析 回顾上节内容,GradlePlugin主要产出了以下文件,以便后续API功能调用 xx.xml:正常的资源编译文件,后续apk中保留为这份文件。主要是将原始的xml文件中的 标签移除,并未每个view设置tag xx-layout.xml:记录组件的绑定信息,如标签内容,以及xml使用的表达式 XXBinding.java: 2022-05-10 源码解析
Android-DataBinding-GradlePlugin分析 DataBinding 中 Gradle Plugin相关分析,主要实现了以下功能 生成了 xx.xml以及xx-layout.xml 生成了xxBinding.java和xxBindingImpl.java 生成了BR.java和DataBinderMapperImpl.java 以上的文件为后面的Library分析提供了基础保障 相关模块1compiler`、 `compilerCom 2022-05-10 源码解析
Android-DataBinding分析 分析基于 androidx.databinding 4.1.3版本进行 源码&编译源码地址 123git clone https://android.googlesource.com/platform/tools/buildSrcgit clone https://android.googlesource.com/platform/frameworks/data-binding 基于分 2022-05-08 源码解析
Gradle学习笔记-Android打包过程 概述APK组成 对Apk文件进行解压处理,本质是Zip,解压后可以看到若干文件。 主要由以下部分组成: 文件/目录 描述 lib/ 存放so文件,一般情况下包含armeabi-v7a、arm64-v8a这两个目录,其他还有x86、armeabi等。 res/ 存放编译后的资源文件,例如drawable、layout等 META_INF/ 一般存在于已经签名的Apk中,记录签 2022-03-18 Gradle
Gradle学习笔记-Transform & TransformAction Transform API存在于AGP中,存在版本为4.2-7.0+,后续在8.0时就会被移除。 Transform AGP 1.5引入的特性,主要用于在构建过程中,在Class->Dex修改Class字节码,通过Transform可以获得Class文件。 再通过Javassist或ASM对字节码进行修改,插入自定义逻辑。 AGP插件版本说明 后面的分析基于以下版本: AGP:7.2.1 2022-03-10 Gradle