Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by IBinder contextThread
Android Activity启动流程(Android 13)
Android Activity启动流程(Android 13) 概述 AMS(ActivityManagerService) 是 Android 操作系统中的一个核心组件。它负责管理应用程序的生命周期、进程管理、任务管理、内存管理以及应用程序之间的通信。 在 Android 10 及以后版本中,AMS 的部分功能迁移到了 ATMS,Activity 的管理和调度主要由 ATMS(ActivityTaskManagerService) 负责,而其他三大组件(Service、ContentProvider 和 BroadcastReceiver)仍然由 AMS 管理。AMS 持有 ATMS 的引用,AMS 可以通过 ATMS 处理 Activity。 流程图 App 进程向 SystemServer 进程发送 startActivity 请求。 SystemServer 进程处理 startActivity 请求,如果 App 进程存在,则直接调用直接启动 Activity,如果 App 进程不存在,则向 Zygote 进程发送创建进程消息。 Zygote...
Activity启动流程-CSDN博客
1 冷启动与热启动 应用启动分为冷启动和热启动。 冷启动:点击桌面图标,手机系统不存在该应用进程,这时系统会重新fork一个子进程来加载Application并启动Activity,这个启动方式就是冷启动。 热启动:应用的热启动比冷启动简单得多,开销也更低。在热启动中,因为系统里已有该应用的进程,所以系统的所有工作就是将Activity 带到前台。 2 Activity的启动流程 当我们点击Launcher上的应用图标时,最终会调用到activity的startActivity()函数。我们就从activity的startActivity()开始。 @Override public void startActivity(Intent intent, @Nullable Bundle options) { getAutofillClientController().onStartActivity(intent, mIntent); if (options != null) { startActivityForResult(intent, -1, options); } else {...
android13 应用冷启动-CSDN博客
1 概述 launcher 通过binder到systemserver中atms中发送startActivity请求 startProcess向zygote发送启动新进程请求 zygote收到请求,fork新进程并调用ActivityThread的main初始化 新进程启动,发送attachApplication给ams,告诉他新进程启动成功 ams收到新进程启动成功的消息,做一系列准备工作,ActivityTaskSupervisor的realStartActivityLocked方法发起启动Activity。ActivityTaskSupervisor使用ApplicationThread的Binder代理向被启动的App进程发送scheduleTransaction请求。 被启动的App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送EXECUTE_TRANSACTION消息 主线程在收到Message后,通过反射机制创建目标Activity,并回调Activity.onCreate()等方法 2...
Android应用程序启动源码浅析-(三万字长文慎点&Android14) - 柳云居士 - 博客园
在Android桌面Launcher源码浅析中介绍了Android的桌面程序Launcher是如何响应用户点击事件并启动App的,这篇文章继续介绍App在Android系统层的启动流程。 sequenceDiagram participant User participant Launcher participant ActivityManagerService participant Zygote participant AppProcess participant Application participant FirstActivity User ->> Launcher: 点击应用图标 Launcher ->> ActivityManagerService: 请求启动Activity ActivityManagerService ->> Zygote: 创建新进程 Zygote -->> AppProcess: fork新进程 AppProcess ->> Application: 创建Application实例 Application ->>...
Android Activity启动流程一:从Intent到Activity创建
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 @TOC 学习前,建议有相关知识储备: 【Android 基础】 应用(Application)启动流程 通过本文你可以学习到Activity启动流程。 Activity 是 android 四大组件之一,很有必要知道它的启动过程,我们在上一篇文章中介绍了 APP的启动流程,里面大概讲到了Activity的 启动流程,在本文中,我们系统的再总结一下,当成一个记录。 Activity 的启动方式我们讲有两种,一种是在应用内部启动,另一种是外部启动,比如Launcher; 应用内启动 通过 startActivity、startActivityForResult等方式来启动 Activity 其流程我们总结下: 1、调用 Activity 的 startActivity 方法来启动目标 Activity 2、接着就会调用到 Instrunmentation 的 execStartActivity 方法,然后调用到 AMS...
插件化原理_橙子19911016的博客-CSDN博客
插件化技术和热修复技术都属于动态加载,从普及率的角度来看,插件化技术还没有热修复的普及率高,主要原因是占大多数的中小型应用很少也没有必要去采用插件化技术。 Android P preview(Android 9)开始限制调用隐藏 API,也出现了一些绕过限制的方案。无论采用何种方案,插件化的原理还是需要理解的。 动态加载技术是插件化的前身。 在 Android 传统开发中,一旦应用的代码被打包成 APK 并被上传到各个渠道市场,就不能修改应用的源码了。只能通过服务器来控制应用中预留的分支代码。但是很多时候我们无法提前预知需求和突发的情况,也就不能提前在应用代码中预留分支代码,这时就需要采用动态加载技术。 在应用程序运行时,动态加载一些程序中原本不存在的可执行文件并运行这些文件里的代码逻辑。可执行文件总的来说分为两种,一种是动态链接库 so,另一种是 dex 相关文件(dex 以及包含 dex 的 jar/apk 文件)。 随着应用的发展,动态加载技术派生出两个技术,分别是热修复技术和插件化技术: 其中热修复技术主要用来修复...
手把手带你搞懂AMS启动原理_Pingred_hjh的博客-CSDN博客
最近那么多教学视频(特别是搞车载的)都在讲AMS,可能这也跟要快速启动一个app(甚至是提高安卓系统启动速度有关),毕竟作为安卓系统的核心系统服务之一,AMS以及PMS都是很重要的,而我之前在 应用的开端–PackageManagerService(PMS) 已经很详细地讲解过PMS,大家有兴趣的可以去看看。 我们都知道当手机开机时,或者是安装某个apk时,PMS会去扫描加载/data/app目录和system/app里每个apk里的所有类信息并且进行解析,然后缓存到PMS它自己里面定义好的集合里,供AMS使用,AMS即ActivityManagerService就能根据PMS里面的这些类信息来进行创建入口Activity等四大组件类并启动。下面将详细讲解AMS是怎样工作的。 提示:以下是本篇文章正文内容 讲AMS之前,还是得回顾一下PMS的工作流程,PMS会把每个apk进行扫描,然后分别把每个apk里的信息都缓存在mPackages集合里: 它是PackageParser.Package类型,所以我们看看这个类里的内容: public final static class...
Android | Activity 启动流程分析
前言 Activity 类是 android 应用的关键组件,在日常开发中,绝对少不了组件。既然用了这么久,你知道他的启动流程🐴?作为一个应用层开发者,大多数人可能觉得学习这些对日常开发可能没有太大帮助。但是多了解一下 framework 的代码还是很有必要的,了解系统组件机制,对于一些问题我们也能快速的定位找到问题的所在点,并且在面试的时候也是一个加分项。 本文基于 Android 12 版本源码,从 startActivity 作为切入点,对整个启动流程进行分析。 Activity 启动方式 启动一个 Activity,通常有两种情况,一种是在应用内部启动 Activity,另一种是 Launcher 启动。 应用内启动 通过 startActivity 来启动 Activity Launcher 进程启动 Launcher 就是我们桌面程序,当系统开机后, Launcher 也随之被启动,然后将已经安装的 app 显示在桌面上,等到点击某一个 app 的时候就会 fock 一个新的进程,然后启动 Activity 这篇文章主要来看一下应用内启动 Activity...
深入浅出系列之从new一个Activit的操作延伸到Activity启动流程_ITPUB博客
前言 前段时间在公司一个老项目中 , 看到有个惊为天人的操作 —— 直接 new 了一个 activity , 当然最后他没有调用 , 估计是调用后发现崩溃了 , 当时的第一反应是怎么敢这样干的啊 , activity 的创建应该是 AMS 干的 , 自己 new 的 activity 系统就没办法进行管理 , 关于 activity 的生命周期等等全部都乱套了 , 然后就在想 , 那 Android 的 activity 是如何启动的 , 甚至与 Android 系统是如何启动的 ? 一、 为什么不能自己 new Ac tivity ? 其实 Activity 本质上也是一个普通的类 , 他的基类也是 Object , 所以直接创建 Activity 在编译时并不会报错 , Android 系统中是通过 AMS 来创建 Activity 的 ( 具体分析可以直接看下面的内容 )。 更具体的来说 , Activity 是被 newInstance 创建出来的 。Instrumentation...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with IBinder
Contact IBinder, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack