Android应用程序启动过程
2015-07-19 08:59
447 查看
ActivityManagerService.startProcessLocked
Process is a tool to Manage the OS processes
Process.ProcessStartResult startResult = Process.start("android.app.ActivityThread",
app.processName, uid, uid, gids, debugFlags, mountExternal,
app.info.targetSdkVersion, null, null);
指定新进程入口函数为 android.app.ActivityThread 的静态函数main
Process.start---->startViaZygote
start的条件
// --runtime-init, --setuid=, --setgid=,
// and --setgroups= must go first
argsForZygote.add("--runtime-init");
argsForZygote.add("--setuid=" + uid);
argsForZygote.add("--setgid=" + gid);
if ((debugFlags & Zygote.DEBUG_ENABLE_JNI_LOGGING) != 0) {
argsForZygote.add("--enable-jni-logging");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_SAFEMODE) != 0) {
argsForZygote.add("--enable-safemode");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_DEBUGGER) != 0) {
argsForZygote.add("--enable-debugger");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) {
argsForZygote.add("--enable-checkjni");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) {
argsForZygote.add("--enable-assert");
}
if (mountExternal == Zygote.MOUNT_EXTERNAL_MULTIUSER) {
argsForZygote.add("--mount-external-multiuser");
} else if (mountExternal == Zygote.MOUNT_EXTERNAL_MULTIUSER_ALL) {
argsForZygote.add("--mount-external-multiuser-all");
}
argsForZygote.add("--target-sdk-version=" + targetSdkVersion);
启动一个Binder线程池。
Process is a tool to Manage the OS processes
Process.ProcessStartResult startResult = Process.start("android.app.ActivityThread",
app.processName, uid, uid, gids, debugFlags, mountExternal,
app.info.targetSdkVersion, null, null);
指定新进程入口函数为 android.app.ActivityThread 的静态函数main
Process.start---->startViaZygote
start的条件
// --runtime-init, --setuid=, --setgid=,
// and --setgroups= must go first
argsForZygote.add("--runtime-init");
argsForZygote.add("--setuid=" + uid);
argsForZygote.add("--setgid=" + gid);
if ((debugFlags & Zygote.DEBUG_ENABLE_JNI_LOGGING) != 0) {
argsForZygote.add("--enable-jni-logging");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_SAFEMODE) != 0) {
argsForZygote.add("--enable-safemode");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_DEBUGGER) != 0) {
argsForZygote.add("--enable-debugger");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) {
argsForZygote.add("--enable-checkjni");
}
if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) {
argsForZygote.add("--enable-assert");
}
if (mountExternal == Zygote.MOUNT_EXTERNAL_MULTIUSER) {
argsForZygote.add("--mount-external-multiuser");
} else if (mountExternal == Zygote.MOUNT_EXTERNAL_MULTIUSER_ALL) {
argsForZygote.add("--mount-external-multiuser-all");
}
argsForZygote.add("--target-sdk-version=" + targetSdkVersion);
启动一个Binder线程池。
相关文章推荐
- Android:TextView属性大全
- Android SnackBar:你值得拥有的信息提示控件
- Android SnackBar:你值得拥有的信息提示控件
- android 无标题栏的设置方法
- Android studio 1.3 NDK开发
- Android Studio关于USB device not found的解决办法
- 学习笔记——一个简单的还原短信的Android应用出现的问题
- Android Studio AIDL 自定义类型找不到问题
- 【Android】Fragment真正意义上的onResume和onPause
- android(2)在listView中设置长按显示button,实现删除item
- AndroidStudio快捷键汇总
- Android 删除新版安卓fragment_main.xml
- android 代码功能测试junit test
- Android RxJava使用介绍(四) RxJava的操作符
- 说说Android中的ANR
- Android开发超常见的内存泄露以及解决
- Android如何实现毛玻璃效果之Android高级模糊技术
- 推荐几个非常有用的开发工具之Android Studio插件
- Mac下Android studio 之NDK配置教程
- Android 开发有哪些新技术出现?