Android 应用启动过程

Android应用的完全启动过程

用户点击应用图标后,Android应用的完全启动过程包括以下步骤:

  1. 启动器图标点击:用户点击应用程序的图标,触发启动器(Launcher)加载应用程序的入口Activity。

  2. 启动器加载:启动器根据应用程序的包名,在设备上查找对应的应用程序,并加载应用程序的数据(包括应用程序的图标、名称等)。

  3. 启动Activity:启动器通过Intent将启动请求发送给Android系统(Android Manager System),并指定要启动的Activity。系统会根据Intent中的信息找到并启动对应的Activity组件。

  4. Zygote进程启动:当系统收到启动请求后,首先会启动Zygote进程。Zygote进程是专门负责孵化新的应用进程的进程,它是所有应用进程的“父进程”。

  5. 应用进程创建:Zygote进程将会对应用程序的进程进行孵化,创建一个新的应用进程。

  6. 应用进程初始化:新的应用进程在创建后,会进行一系列的初始化工作,包括应用程序的类加载、资源加载、创建Application对象等。

  7. 启动Activity的生命周期方法:当应用启动后,系统会依次调用启动的Activity的生命周期方法,包括onCreate()、onStart()、onResume()。在这些方法中,开发者可以进行一些初始化操作和准备工作。在onCreate()方法中,可以进行一些初始化操作,比如设置布局、绑定数据等;在onStart()方法中,Activity变为可见状态;在onResume()方法中,Activity准备好和用户进行交互。

  8. 布局绘制:在调用完Activity的生命周期方法后,系统会执行Activity的布局,并将其显示在屏幕上。

  9. 交互与响应:当Activity显示在屏幕上后,用户可以与应用程序进行交互。应用程序会根据用户的操作做出响应,如点击按钮、输入文本等。

包名
新的应用进程
启动器Launcher
Android系统AMS
Zygote进程
创建Application对象
Activity的生命周期
布局绘制

需要注意的是,启动过程会因为设备性能、应用的复杂性和启动流程的差异而有所不同,以上是一个大致的启动流程。

Android活动A打开活动B再返回活动A的生命周期

参考:https://blog.csdn.net/wq6ylg08/article/details/105907267

一个APP应用有2个完全不透明的Activity:Activity A和Activity B,其中Activity A是主活动。

首先从手机桌面启动该APP应用,即创建加载运行Activity A,该应用各活动生命周期是:A.onCreate() A.onStart() A.onResume()
接着点击Activity A中的一个跳转到Activity B的按钮,该应用各活动生命周期是:A.onPause() B.onCreate() B.onStart() B.onResume() A.onStop()
注意:如果Activity B是透明的或者Activity B并未完全遮住Activity A,那么上述操作点击Activity A中的一个跳转到Activity B的按钮的生命周期中A.onStop()是不会被调用的,因为Activity A还可见,所以Activity A不能被停止。

再接着点击返回按钮销毁Activity B并返回到Activity A,该应用各活动生命周期是:B.onPause() A.onRestart() A.onStart() A.onResume() B.onStop() B.onDestroy()
最后再次点击返回按钮销毁Activity A并返回到手机桌面,该应用各活动生命周期是:A.onPause() A.onStop() A.onDestroy()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录训练营18day-二叉树7

一、530.二叉搜索树的最小绝对差 利用二叉搜索树的有序性,每一层遍历时候,最小差一定是在相邻的两个节点间产生的,因此做递归的时候,记录一个pre和cur节点,用来比较差值,迭代更新时候,记录最小…

ARMv8-A架构下的外部debug模型之外部调试事件(external debug events)概述

外部调试器与处理器之间的握手与external debug events 一,External Debug的使能二,外部调试器和CPU之间的握手三,外部调试事件 External debug events1. External debug request event2. Halt instruction debug event3. Halting step debug…

docker部署安装整理

centos下安装部署docker 在CentOS下部署Docker,你需要按照以下步骤进行操作: 更新系统: 首先,确保你的CentOS系统是最新的。打开终端,并运行以下命令来更新你的系统: sudo yum update -y安装所需的软件包…

[C++/Linux] UNIX域函数

目录 一.什么是UNIX域套接字? 二.如何使用UNIX域函数进行套接字编程? 三.利用socketpair函数进行文件描述符传递 3.1 socketpair函数 3.2 实例 3.3 补充消息结构知识 一.什么是UNIX域套接字? Unix域套接字(Unix Domain Socke…

程序“猿”高阶函数

高阶函数是函数式编程的一个核心概念,它提供了强大的抽象能力,使得代码更加简洁和模块化。正如你所提到的例子,高阶函数可以接受其他函数作为参数,或者返回一个函数。这种特性让它们在处理列表操作、事件处理、异步编程等场景中非…

【力扣一刷】代码随想录day38(动态规划part1:509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼)

目录 【动态规划理论基础】 【509. 斐波那契数】简单题 方法一 用额外的数组存储每个状态 方法二 用2个遍历存储前两个状态(减小空间复杂度) 【70. 爬楼梯】简单题 【746. 使用最小花费爬楼】简单题 【动态规划理论基础】 1、定义:英…

代码随想录算法训练营第四十二天|leetcode121、122题

一、leetcode第121题 本题要求买卖股票一次获取最大利润,设置dp数组,其中dp[i][0]的含义是第i天持有股票的最大利润,dp[i][1]的含义是第i天不持有股票的最大利润,可得递推公式为dp[i][0]max(dp[i-1][0],-prices[i]),d…

A15 STM32_HAL库函数 之 FLASH扩展驱动 所有函数的介绍及使用

A15 STM32_HAL库函数 之 FLASH扩展驱动 所有函数的介绍及使用 1 FLASH扩展驱动 预览1.1 HAL_FLASHEx_Erase1.2 HAL_FLASHEx_Erase_IT1.3 HAL_FLASHEx_OBErase1.4 HAL_FLASHEx_OBProgram1.5 HAL_FLASHEx_OBGetConfig1.6 HAL_FLASHEx_OBGetUserData 该文档修改记录:总…

【从浅学到熟知Linux】环境变量详谈(含使用程序获取环境变量的3种方法、如何查看环境变量)

🏠关于专栏:Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程及数据库等内容。 🎯每天努力一点点,技术变化看得见 文章目录 环境变量基本概念查看环境变量的方法环境变量相关命令环境变量组织方式及获取环境变量的3种方法验…

Cesium.js--》探秘Cesium背后的3D模型魔力—加载纽约模型

今天简单实现一个Cesium.js的小Demo,加强自己对Cesium知识的掌握与学习,先简单对这个开源库进行一个简单的介绍吧! Cesium 是一个开源的地理空间可视化引擎,用于创建基于 Web 的三维地球应用程序。它允许开发人员在网页上呈现高度…

Java基础第十一课——类与对象(2)

由于类与对象这一部分的知识点很多,而且操作方法也有很多,所以这次将继续深入讨论一下关于类与对象中方法传参、方法重载、构造方法以及this关键字使用方面的知识。 一、方法传参 1.return关键字 return关键字作用 作用场景:方法内 作用…

天猫精灵要会员,不能听歌,还能用来干什么呢?榨干它的剩余价值

目录 起因:以听歌为主要功能的设备,却不能听歌了 1.蓝牙音箱 2.控制智能家电 3.万能遥控器,需要一个外接设备 4.倒计时/提醒,闹钟提醒,整点提醒(这功能有人不喜欢,闲吵,还不能关…

LeetCode题练习与总结:最小路径和--64

一、题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

UI设计规范

一套商城系统的诞生,除了代码的编写,UI设计也至关重要。UI设计关系到商城系统的最终呈现效果,关乎整体商城的风格展现,如果UI设计做不好,带来的负面影响也是不容小觑的。 1、在很多商城系统开发中,有时会有…

【Sql Server】锁表如何解锁,模拟会话事务方式锁定一个表然后进行解锁

大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言创建表模拟…

运放噪声评估的来龙去脉

运放噪声评估的来龙去脉 友情提示,运放电路的噪声分析还是比较复杂的,不论是基础理论还是对应的推导过程,都不是特别容易。考虑到兄弟们的基础参差不齐,所以我还是尽量说清楚点,这样导致看起来就有点罗里吧嗦&#xff…

10 Php学习:循环

在 PHP 中,提供了下列循环语句: while - 只要指定的条件成立,则循环执行代码块do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环for - 循环执行代码块指定的次数foreach - 根据数组中每个元素来循环代码块 当…

【Java EE】获取Cookie和Session

文章目录 🎍Cookie简介🍀理解Session🌳Cookie 和 Session 的区别🌲获取Cookie🌸传统获取Cookie🌸简洁获取Cookie 🌴获取Session🌸Session存储🌸Session读取🌻…

Fence同步

在《Android图形显示系统》没有介绍到帧同步的相关概念,这里简单介绍补充一下。 在图形显示系统中,图形缓存GraphicBuffer可以被不同的硬件来访问,如CPU、GPU、HWC都可以对缓存进行读写,如果同时对图形缓存进行操作,有…

mysql8.0高可用集群架构实战

MySQL :: MySQL Shell 8.0 :: 7 MySQL InnoDB Cluster 基本概述 InnoDB Cluster是MySQL官方实现高可用读写分离的架构方案,其中包含以下组件 MySQL Group Replication,简称MGR,是MySQL的主从同步高可用方案,包括数据同步及角色选举Mysql Shell 是InnoDB Cluster的管理工具,用…