首页 > 其他分享 >Android App启动流程

Android App启动流程

时间:2024-08-29 12:21:52浏览次数:14  
标签:调用 startActivity Launcher App 应用 进程 Android ActivityManagerService 流程

1.通过 Launcher 启动应用时,点击应用图标后,Launcher 调用 startActivity 启动应用。
 2.Launcher Activity 最终调用 Instrumentation 的 execStartActivity 来启动应用。
 3.Instrumentation 调用 ActivityManagerProxy (ActivityManagerService 在应用进程的一个代理对象) 对象的 startActivity 方法启动 Activity。
 4.到目前为止所有过程都在 Launcher 进程里面执行,接下来 ActivityManagerProxy 对象跨进程调用 ActivityManagerService (运行在 system_server 进程)的 startActivity 方法启动应用。
 5.ActivityManagerService 的 startActivity 方法经过一系列调用,最后调用 zygoteSendArgsAndGetResult 通过 socket 发送给 zygote 进程,zygote 进程会孵化出新的应用进程。
 6.zygote 进程孵化出新的应用进程后,会执行 ActivityThread 类的 main 方法。在该方法里会先准备好 Looper 和消息队列,然后调用 attach 方法将应用进程绑定到 ActivityManagerService,然后进入 loop 循环,不断地读取消息队列里的消息,并分发消息。
 7.ActivityManagerService 保存应用进程的一个代理对象,然后 ActivityManagerService 通过代理对象通知应用进程创建入口 Activity 的实例,并执行它的生命周期函数。

标签:调用,startActivity,Launcher,App,应用,进程,Android,ActivityManagerService,流程
From: https://blog.csdn.net/wenwang88/article/details/141599695

相关文章

  • Traccar服务器端前后端部署流程
    Traccar官方文档地址:BuildfromSource-Traccar由于官方文档本地部署步骤并不详细且无法复现,本文档从环境配置到运行代码一步一步进行操作教学:第一步:下载git打开该链接下载gitGit-DownloadingPackage(git-scm.com)下载安装包后打开按默认选项安装  ......
  • 记一个题主在使用uniapp开发公众号H5的时候发现的设备类型带来的坑
    当使用navigateTo跳转时需要注意的点:跳转到的页面推荐不要加入获取微信的jssdk操作,容易失败,尤其像是获取定位wx.getLocation,这个差异体现在安卓和苹果上微信通过wx.config读取对应当前页面的链接上。安卓在使用navigateTo跳转后页面实际上是经过刷新的,获取到的页面在history路由......
  • Android开发 - Parcel 类打包对象数据进行传递解析
    Parcel是什么Parcel是用于对象序列化和反序列化的一个类。通俗地说,它是一种轻量级的容器,常用于打包对象的数据(如基本类型和其他Parcelable对象),使它们能够在不同的组件(如Activity、Service等)之间传递Parcel的主要作用不同的组件(如Activity、Service)之间需要传递数据。......
  • 婚恋交友APP开发核心功能
    婚恋交友类的应用程序(App)旨在帮助用户寻找潜在的伴侣或建立社交联系。这类应用的核心功能通常围绕着让用户能够轻松地找到、了解并与潜在对象互动展开。以下是婚恋交友App的一些核心功能:1.**用户注册与登录**:  -用户可以通过手机号码、电子邮箱或社交媒体账号进行注册和......
  • 市政APP开发需要哪些核心功能
    市政APP的开发旨在提高城市管理效率和市民生活质量,通常需要包含一系列实用且便捷的功能。以下是市政APP可能需要的一些核心功能:1.**用户注册与登录**:  -快速注册/登录(支持手机号、邮箱等)。  -第三方账号登录(如微信、支付宝等)。2.**信息查询服务**:  -公共交......
  • APP稳定性测试工具-monkey
    monkey是adbshell中的一个命令行工具,用于执行随机的用户事件(如触摸、点击、滑动、键盘输入等)来测试应用程序的稳定性。安装下载并安装AndroidSDK配置环境变量,将adb所在路径添加到系统环境变量中验证安装adbversion使用1.启动Android设备或模拟器查看已连接设......
  • Node脚本打包uniapp热更新wgt文件
    通过脚本打包uniapp热更新wgt文件前言:uniapp只能通过hbuilder打包wgt文件目标:通过脚本命令打包wgt文件实现思路uniapp官方文档已经提供了wgt文件的的生成思路:目前使用npmrunbuild:app-plus会在/dist/build/app-plus下生成app打包资源。如需制作wgt包,将app-plus中的文......
  • 我的新书《Android系统多媒体进阶实战》正式发售
    我的新书要正式发售了,把链接贴在下面,感兴趣的朋友可以支持下。❶发售平台:当当,京东,抖音北航社平台,小红书,b站❷目前当当和京东已开启预售❸当当网https://u.dangdang.com/KIDHJ❹京东商城https://item.m.jd.com/product/10109083199634.html?gx=RnAoqRAjajbdh8lR5Q&gxd......
  • Android开发 - Parcelable 接口实现不同组件之间传递数据解析
    什么是ParcelableParcelable是用于对象序列化的一种接口。通俗来讲,Parcelable允许将一个对象转化为一个字节流,这样你就可以将这个对象在不同的组件之间(如Activity、Service等)进行传递为什么需要Parcelable组件之间通信时(比如在两个Activity之间传递数据),传递的对象必......
  • Android经典实战之存储方案对比:SharedPreferences vs MMKV vs DataStore
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点在Android开发中,键值对存储(Key-ValueStorage)是一种经常用到的轻量级数据存储方案。它主要用于保存一些简单的配置数据或状态信息,例如用户设置、缓存数据等。常......