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

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

庖丁解牛 Activity 启动流程

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

深入理解 ThreadLocal

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

深入理解 Handler 消息机制

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

细数 SharedPreferences 的那些槽点 !

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