专栏名称: 鸿洋
你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识。点击历史消息,查看所有已推送的文章,喜欢可以置顶本公众号。此外,本公众号支持投稿,如果你有原创的文章,希望通过本公众号发布,欢迎投稿。
目录
相关文章推荐
鸿洋  ·  再学安卓 - SystemServer ·  21 小时前  
今天看啥  ›  专栏  ›  鸿洋

再学安卓 - SystemServer

鸿洋  · 公众号  · android  · 2025-01-08 08:35
    

主要观点总结

本文主要介绍了Android系统中SystemServer的启动流程,包括fork操作、SystemServer的Runnable创建、反射调用SystemServer的main函数等关键步骤。

关键观点总结

关键观点1: fork操作是Android系统创建进程的基础,通过fork,系统可以创建出几乎完全一样的子进程。

在文章提供的代码中,通过fork操作创建了父进程和子进程,两个进程都会执行到第5行的位置,接下来根据pid的值决定执行不同的分支。

关键观点2: SystemServer的启动流程包括创建Runnable、反射调用指定类的main函数等步骤。

文章详细描述了SystemServer的启动流程,从创建Runnable开始,通过反射找到SystemServer类的main方法,并调用它。最终进入Looper的循环处理消息。

关键观点3: SystemServer承担的任务很繁重,需要启动一系列的服务。

SystemServer负责启动一系列的基础服务、核心服务、其他服务和Apex服务,这些服务对于系统的正常运行至关重要。


文章预览

系列教程: 再学安卓 - Zygote 再学安卓 - init进程 前言 在正式开始之前,让我们来尝试理解一下,操作系统复制一个进程(fork)到底是一个什么样的操作,对于程序的执行流程会产生什么影响。先看一下这个简单的代码: # include   # include     int   main ( int  argc,  char *  const  argv[])   {       pid_t  pid;     pid = fork();      if  (pid ==  0 ) {          printf ( "I'm child, my id is %d\n" , getpid());          printf ( "Now in child process\n" );     }  else   if (pid >  0 ) {          printf ( "I'm parent, my id is %d\n" , getpid());          printf ( "Now in parent process\n" );     }  else  {          printf ( "error occurred!" );     }      return   0 ; } 我们在Ubuntu下面编译一下以上代码并执行: // 编译 gcc fork_test.c -o bin_fork_test // 执行 ./bin_fork_test // 输 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览