前言

Activity一般是安卓开发接触到的第一个重要组件,代表着与用户交互的活动视窗,活动与活动之间往往不是相互独立的,startActivity()就是从一个活动跳转到另一个活动的桥梁。而对于startActivity()的了解,我们往往只停留在它的使用上,很少去深究它的原理

今天,就让我们跟随着源码,一步一步的追溯它的调用流程,初步了解下它的调用链,后续我们还可以继续挖掘,关于应用启动、启动模式、hook启动流程等相关技术支持。

此系列博客在未声明API版本情况下,将使用API30 版本的AndroidSDK源码。

源码查看工具使用AndroidStudio。源码来源%AndroidSDK%/sources。一般方式:备份一份source目录,使用AndroidStudio Open你想观察的api版本的源码目录。

2021年04月11日 framework
阅读更多...

内存

JAVA是在JVM所虚拟出的内存环境中运行的,JVM的内存可分为三个区:

堆(heap)、栈(stack)和方法区(method)。

栈(stack)

是简单的数据结构,但在计算机中使用广泛。栈最显著的特征是:LIFO(Last In, First Out, 后进先出),栈中只存放基本类型和对象的引用

堆(heap)

堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。JVM只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。

方法区(method)

又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量

2021年04月04日 性能优化
阅读更多...