AOSP

AOSP

从源码看 Activity 生命周期(上篇)

本文是我的AOSP系列第六篇文章,往期目录如下:Java世界的盘古和女娲——ZygoteZygote家的大儿子——SystemServerAndroid世界中,谁喊醒了Zygote?“无处不在”的系统核心服务——ActivityManagerService启动流程解析庖丁解牛Activity启动流程

2020-01-07
261 0

庖丁解牛 Activity 启动流程

前言这是Android9.0AOSP系列的第五篇了,先来回顾一下前面几篇的大致内容。Java世界的盘古和女娲——Zygote主要介绍了Android世界的第一个Java进程Zygote的启动过程。注册服务端socket,用于响应客户端请求各种预加载操作,类,资源,共享库等强制GC一次forkSyst

2019-12-03
221 0

“无处不在” 的系统核心服务 —— ActivityManagerService 启动流程解析

本文基于Android9.0,代码仓库地址:android_9.0.0_r45系列文章目录:Java世界的盘古和女娲——ZygoteZygote家的大儿子——SystemServerAndroid世界中,谁喊醒了Zygote?文中相关源码链接:SystemServer.javaActivityMan

2019-10-27
265 0

Android 世界中,谁喊醒了 Zygote ?

本文基于Android9.0,代码仓库地址:android_9.0.0_r45文中源码链接:SystemServer.javaActivityManagerService.javaProcess.javaZygoteProcess.java对Zygote和SystemServer启动流程还不熟悉的建

2019-10-15
185 0

Zygote家的大儿子 —— SystemServer

本文基于Android9.0,代码仓库地址:android_9.0.0_r45文中源码链接:SystemServer.javaSystemServiceManager.javaSystemService.java首先来回顾一下上篇文章Java世界的盘古和女娲——Zygote,主要介绍了Android

2019-10-13
165 0

Java 世界的盘古和女娲 —— Zygote

本文基于Android9.0,代码仓库地址:android_9.0.0_r45文中源码链接:Zygote.javaZygoteInit.javaZygoteServer.javaZygoteConnection.javaRuntimeInit.java仔细看看下面这张Android体系图,找一下Zy

2019-09-28
190 0

深入理解 ThreadLocal

前言上篇文章深入理解Handler消息机制中提到了获取线程的Looper是通过ThreadLocal来实现的:publicstatic@NullableLoopermyLooper(){returnsThreadLocal.get();}每个线程都有自己的Looper,它们之间不应该有任何交集,互不

2019-09-10
76 0

深入理解 Handler 消息机制

记得很多年前的一次面试中,面试官问了这么一个问题,你在项目中一般如何实现线程切换?他的本意应该是考察RxJava的使用,只是我的答案是Handler,他也就没有再追问下去了。在早期Android开发的荒芜时代,Handler的确承担了项目中大部分的线程切换工作,通常包括子线程更新UI和消息传递。不光

2019-09-05
88 0

细数 SharedPreferences 的那些槽点 !

前言最近在处理一个历史遗留项目的时候饱受其害,主要表现为偶发性的SharedPreferences配置文件数据错乱,甚至丢失。经过排查发现是多进程的问题。项目中有两个不同进程,且会频繁的读写SharedPreferences文件,所以导致了数据错乱和丢失。趁此机会,精读了一遍SharedPrefer

2019-08-28
145 1