qq显示android登录中怎么实现qq登录

它通过解析init.rc脚本来构建出qq显示android登录运行初始化形态(qq显示android登录系统服务程序大多是在这个脚本中被启动)
系统启动流程图可以从这个图里面看出,这个网上找的一张

  • boot 。这是init程序启动后触发的第一个事件

services是可执行程序形式如下

pathname表示service程序所在路径,里面有程序源码因为是可执行程序,所有必须有路径

由于还没有编译源码,所有在source中找不到代码路径:\system\core\init\init.c此处盗用网上一般的init.c分析,下次找到了再自己具体分析

// 2、创建文件夹,并挂载设备 // 5、解析机器相关的配置文件一般相关的放在init.rc中利用service action调过去 // 7、初始化及加载属性相关资源 9.init进程的处理循环

在上述init程序启动中,通过解析init.rc实际上也就陆续启动了其他关键服务,这些服务中最重要的就是ServiceManager,Zygote,SystemServer三个系统服务进程例如在启动boot触发事件中就有启动Zygote服务。

Zygote–受精卵孕育新线程/进程

qq显示android登录中大多数应用进程和系统进程都是通过Zygote来生成的zygote进程在内部会先启动虚擬机,继而加载一些必要的系统资源和系统类最后进入一种监听状态。在后续的运作中当其他系统模块(比如AMS)希望创建新进程时,呮需向zygote进程发出请求zygote进程监听到该请求后,会相应地“分裂”出新的进程于是这个新进程在初生之时,就先天具有了自己的Dalvik虚拟机以忣系统资源。Zygote在init.rc中的描述如下所示

在app_process程序中最核心的代码是下面这句

  • 利用preload,预装载各种系统类,main()方法如下所示

将java层的開机流程大致的画在一张图上,如下:

对于zygote,作为一个最原始的“受精卵”它必须在合适的时机进行必要的细胞分裂。分裂动作也没什么夶的花样不过就是fork()新进程而已。如果fork()出的新进程是system server那么其最终执行的就是SystemServer类的main()函数,而如果fork()出的新进程是普通的用户进程的话那么其最终执行的就是ActivityThread类的main()函数。有关ActivityThread的细节我们有时间再深入探讨,这里就不细说了

我要回帖

更多关于 qq显示android登录 的文章

 

随机推荐