1. 问题
经常需要在家里跟公司登录同一个网站,每次在公司登录后,家里浏览器登录状态就会被踢下来,很麻烦。希望找到一种办法可以共享登录状态,不用每次都要重新登录。
在上篇文章中我们大致介绍了关于Linux启动的过程,基本上都会经历几个流程:
kernel启动完之后,会执行第一个程序init,之后init进程会继续fork出许多系统核心进程来提供相应的服务。其中跟Android关系最密切的zygote进程也是由init进程直接fork出来,如下图所示:
之后再由zygote进程孵化出Android核心进程systemserver,Android很多核心服务如ActivityManagerService、WindowManagerService都是直接以线程的方式驻留在systemserver进程为app(客户端)提供服务,如下图所示:
从上面两张图中我们可以看到,Linux就是Android系统的基石,没有Linux提供的基础服务(内存管理、进程调度、文件系统等),Android就无从谈起。从这个意义上来说,Android运行在Linux的一个应用程序而已。当然,Android只是基于Linux,而不是Linux,Android基于Linux,创建了一套完全与Linux应用不一样的开发”语言”,让开发者可以使用Java就能做出有趣的应用,间接地降低了开发的门槛(C++因为内存泄露和野指针的问题饱受诟病)。这套”语言”里包含了很多概念比如Activity、Service、Broadcast、ContentProvider、Window、Surface、View等,后续我们会一一说明。今天我们先从代码角度来看Android的启动过程。本文源码基于Android 2.3.7_r1。
一直想写一篇Linux启动过程的文章,看到这篇讲得不错,于是打算翻译出来。水平有限,不足之处欢迎指正。原文在此:https://www.crybit.com/linux-boot-process/