美文网首页收藏
Android日志:程序启动流程

Android日志:程序启动流程

作者: 搬码人 | 来源:发表于2021-10-17 17:40 被阅读0次

手机开机到点击应用程序缩略图标的流程

程序启动流程

1、开机
2、BootLoader来加载操作系统,是通过C++来完成的
3、Linux系统
4、启动一个进程,用于管理手机页面
5、系统服务SystemService
WindowManagerService
ActivityManagerService ->通过launcher.java来执行相应的代码 ->打开应用、打开打开文件夹
CameraService……

一个程序运行起来是一个进程,那么一个桌面程序运行起来也是一个进程。而执行某一个具体的任务是由线程来操作的ActivityThread ->线程的入口点main函数->点击图标->启动ActivityThread ->将ActivityThread对象进行绑定 thread.attach(false,startSeq)
->创建仪表类对象 管理程序的生命周期 mInnstrumentation = new Instrumentation();
->创建上下文ContextImpl context = ContextImpl.createAppContext(this,getSystemContext(),mPackageInfo);
->创建应用程序 mInitialApplication = context.mPackageInfo.makeApplication(true,null);
app = mActivityThread.mInstrument.newApplication(cl,appClass,appContext);
->回调application的onCreate方法: instrumentation.callApplicationOnCreate(app);
当系统启动应用程序被创建的时候被调用,当调用onCreate方法,那么程序已经被创建了

Activity的创建流程

在ActivityThread中启动activity的流程
handleLaunchActivity-> performLaunchActivity 这是Activity的创建最核心的部分
-> 创建activity的上下文createContextForActivity
->创建启动的页面activity = Instrumentation.newActivity(cl,component.getClassName)
->将界面和window等信息绑定activity.attach(appContext,getInstrumentation,window……)->调用onCreate方法布局activity界面 mInstrumentation.callActivityOnCreate(activity,r.state)
->activity.performCreate(icicle);
->onCreate(icicle)
在Activity的子类中,通过实现onCreate方法 来对界面内进行初始化(UI布局,逻辑初始化)

Context上下文解

Application、Activity、Service等都有Context
什么是Context
简单来说就是运行环境,提供了访问系统资源的方法,可以理解为一种连接设备与界面之间的桥梁。
比如我们想访问某项资源完成某个任务,那么就需要context访问系统资源。比如getSharedPreferences、openFileInput、deleteFile、getExternalFileDir(获取SDK对应的路径)、startActivity……
我们来看一下官方解释:Context本身是一个抽象类,是对一系列系统服务接口的封装,包括:内部资源、包、类加载、I/O操作、权限、主线程、IPC和组件启动等操作的管理。
Context的获取方式
context和getApplicationContext
大多数情况下两者可以通用。在涉及界面跳转的情况下尽量使用activity的context,其提供了默认的任务栈。而applicationContext没有提供任务栈。

相关文章

网友评论

    本文标题:Android日志:程序启动流程

    本文链接:https://www.haomeiwen.com/subject/mzxboltx.html