Android培训班(35)

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

init.rc文件里,可以看到加载下面的服务:

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

socket zygote stream 666

onrestart write /sys/android_power/request_state wake

onrestart write /sys/power/state on

onrestart restart media

zygote服务的代码在目录:

Android-2.0/frameworks/base/cmds/app_process

 

zygote服务主要作用就是创建一个服务监听用户的命令,并且根据用户的命令创建应用程序运行。

它的主要入口函数代码如下:

int main(int argc, const char* const argv[])

{

// These are global variables in ProcessState.cpp

mArgC = argc;

mArgV = argv;

 

mArgLen = 0;

for (int i=0; i<argc; i++) {

mArgLen += strlen(argv[i]) + 1;

}

mArgLen--;

 

AppRuntime runtime;

这里创建JAVA运行库对象。

 

const char *arg;

const char *argv0;

 

argv0 = argv[0];

 

// Process command line arguments

// ignore argv[0]

argc--;

argv++;

 

// Everything up to '--' or first non '-' arg goes to the vm

 

int i = runtime.addVmArguments(argc, argv);

这里添加命令行参数。

 

 

// Next arg is parent directory

if (i < argc) {

runtime.mParentDir = argv[i++];

}

 

// Next arg is startup classname or "--zygote"

if (i < argc) {

arg = argv[i++];

if (0 == strcmp("--zygote", arg)) {

bool startSystemServer = (i < argc) ?

strcmp(argv[i], "--start-system-server") == 0 : false;

setArgv0(argv0, "zygote");

set_process_name("zygote");

runtime.start("com.android.internal.os.ZygoteInit",

startSystemServer);

这里根据命令行参数来创建JAVA虚拟机,并从 com.android.internal.os.ZygoteInit开始运行,然后启动所有JAVA的服务。

 

} else {

set_process_name(argv0);

 

runtime.mClassName = arg;

 

// Remainder of args get passed to startup class main()

runtime.mArgC = argc-i;

runtime.mArgV = argv+i;

 

LOGV("App process is starting with pid=%d, class=%s./n",

getpid(), runtime.getClassName());

runtime.start();

}

} else {

LOG_ALWAYS_FATAL("app_process: no class name or --zygote supplied.");

fprintf(stderr, "Error: no class name or --zygote supplied./n");

app_usage();

return 10;

}

 

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值