1,init.c的启动 挂载目录 初始化 解析配置文件 2,init.rc 3,在init.rc中app_main中启动了zygote(孵化器),AndroidRuntime Zygote这个进程是非常重要的一个进程,Zygote进程的建立是真正的Android运行空间,初始化建立的Service都是Navtive service 4,在zygote java类中开启各种服务,并且开启systemServer类 5,在systemS...
app == null && app.uid == hr.info.applicationInfo.uid && processName.equals(hr.processName)) { try { // 执行启动Activity if (realStartActivityLocked(hr, app, true, true)) { didSomething = true; } } catch (RemoteException e) { Slog.w(TAG, "Exception in new application when ...
App启动流程分为2个部分,一个是系统开机,拉起Launcher APP。另一个流程分为Launcher APP点击桌面应用图标,然后启动APP。我们首先分析Launcher APP的启动。 Launcher APP的启动: 在android启动流程-SystemServer一篇文章中我们简单提过Launcher APP启动的过程,本章我们具体分析一下Launcher APP是怎么启动的。 还是先从Acti...
最后调用Launcher.java里面的onClick()方法响应点击,启动程序。下面我们针对关键流程做分析。 1、WorkSpace触摸 前面我们分析Launcher的配置文件时就说过,Launcher外面的界面主要就是通过WorkSpace来显示的。它是一个ViewGroup的自定义类。下面我们先看看WorkSpace的onInterceptTouchEvent做了什么。 //Edited by mythou //ht...
二. Launcher 桌面启动App过程分析 Launcher应用程序在启动过程中会通过PackageManagerService服务请求查询系统所有的已安装应用的包名,图标和应用名称等信息,然后填充到Launcher中的Adapter中. 这样点击某一项应用图标的时候就可以根据该图标的包名和启动Activity的类名初始化Intent对象,然后调用startActivity(Intent)启动相关的...
1. Android 系统启动流程概览 init 是用户空间的第一个进程,它的父进程是idle进程 init 进程通过解析init.rc文件并fork出相应的进程 zygote是第一个Java 虚拟机进程,通过它孵化出system_server 进程 system_server 进程启动桌面(Launcher)App 以上为Android 系统上电到桌面启动的简略过程,我们重点关注其中几个进程: ...
图二标识一:这里往View里面设置了一个AppInfo对象,点击去applyFromApplicationInfo可以看出其实AppInfo对象设置给了View的tag变量。后面点击launcher的应用图标后,会跟着点击ocClick事件返回一个带有AppInfo对象的view,这个对后面的点击启动已安装应用的源码分析有用。
ActivityThread启动主线程进入android.app.activethread类后,开始执行main函数:public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain"); SamplingProfilerIntegration.start(); CloseGuard.setEnabled(false); Environment.initForCurrentUser(); EventLogger....
从点击Launcher图标到app启动经历了七大步。 1.Launcher通知AMS要启动某个App,并把图标中携带的启动信息也发给AMS。 2.AMS收到消息后保存App图标中携带的启动信息,并同坐App进程,我知道了,你可以休眠了。 3.Launcher进程收到AMS发过来的消息后,Launcher Activity进入休眠(pause),然后通知AMS我已休眠 ...
Android应用启动之从Launcher拉起APP(二) 上文中写到,第一次启动应用程序的Activity,函数最终执行ActivityManagerService.startProcessLocked函数: 代码语言:javascript 复制 private boolean startProcessLocked(String hostingType, String hostingNameStr, String entryPoint, ProcessRecord app, int uid, int[] gids, int...