当前位置: 首页 > news >正文

Activity->Activity生命周期

<四大组件 android:name="xxx"android:exported="true" // 该组边能够被其他组件启动android:enabled="true" // 该组件能工与用户交互
</四大组件>

Activity常用生命周期

  • 启动Activity
2024-05-29 03:53:57.401 21372-21372 yang                    I  onCreate
2024-05-29 03:53:57.403 21372-21372 yang                    I  onStart
2024-05-29 03:53:57.405 21372-21372 yang                    I  onResume
  • Activity切到后台,锁屏
2024-05-29 03:55:14.174 21372-21372 yang                    I  onPause
2024-05-29 03:55:14.647 21372-21372 yang                    I  onStop
2024-05-29 03:55:14.648 21372-21372 yang                    I  onSaveInstanceState
  • Activity返回前台
2024-05-29 03:55:42.337 21372-21372 yang                    I  onRestart
2024-05-29 03:55:42.340 21372-21372 yang                    I  onStart
2024-05-29 03:55:42.340 21372-21372 yang                    I  onResume
  • Activity旋转方向两次回来
  • AndroidManifest.xml文件中没有配置android:configChanges="screenSize|orientation"
2024-05-29 04:13:49.562 16759-16759 yang                    I  onCreate
2024-05-29 04:13:49.565 16759-16759 yang                    I  onStart
2024-05-29 04:13:49.567 16759-16759 yang                    I  onResume
2024-05-29 04:14:00.009 16759-16759 yang                    I  onPause
2024-05-29 04:14:00.014 16759-16759 yang                    I  onStop
2024-05-29 04:14:00.015 16759-16759 yang                    I  onSaveInstanceState
2024-05-29 04:14:00.015 16759-16759 yang                    I  onDestroy
2024-05-29 04:14:00.077 16759-16759 yang                    I  onCreate
2024-05-29 04:14:00.089 16759-16759 yang                    I  onStart
2024-05-29 04:14:00.090 16759-16759 yang                    I  onRestoreInstanceState
2024-05-29 04:14:00.090 16759-16759 yang                    I  onResume
  • AndroidManifest.xml文件中配置android:configChanges="screenSize|orientation"
2024-05-29 04:15:54.484 17090-17090 yang                    I  onCreate
2024-05-29 04:15:54.486 17090-17090 yang                    I  onStart
2024-05-29 04:15:54.488 17090-17090 yang                    I  onResume
2024-05-29 04:16:05.746 17090-17090 yang                    I  onConfigurationChanged
2024-05-29 04:16:12.112 17090-17090 yang                    I  onConfigurationChanged

Activity启动模式

standard标准模式

  • 每次启动Activity时,系统都会在当前Activity栈创建一个新的Activity实例,无论该Activity是否已经存在
const val TAG = "Yang"
class MainActivity : AppCompatActivity() {var mImageView : MyImageView ?= nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)mImageView = findViewById(R.id.real_iv)mImageView?.setOnClickListener {val intent = Intent(this, MainActivity::class.java)startActivity(intent)}Log.i("yang", "$this onCreate")}override fun onStart() {super.onStart()Log.i("yang", "$this onStart")}override fun onResume() {super.onResume()Log.i("yang", "$this onResume")}override fun onPause() {super.onPause()Log.i("yang", "$this onPause")}override fun onStop() {super.onStop()Log.i("yang", "$this onStop")}override fun onDestroy() {super.onDestroy()Log.i("yang", "$this onDestroy")}override fun onRestart() {super.onRestart()Log.i("yang", "$this onRestart")}override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)Log.i("yang", "$this onSaveInstanceState")}override fun onRestoreInstanceState(savedInstanceState: Bundle) {super.onRestoreInstanceState(savedInstanceState)Log.i("yang", "$this onRestoreInstanceState")}override fun onConfigurationChanged(newConfig: Configuration) {super.onConfigurationChanged(newConfig)Log.i("yang", "$this onConfigurationChanged")}override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)Log.i("yang", "$this onNewIntent")}
}// log result
2024-05-29 05:01:46.737 26443-26443 yang                    I  com.yang.app.MainActivity@54d9d4e onCreate
2024-05-29 05:01:46.739 26443-26443 yang                    I  com.yang.app.MainActivity@54d9d4e onStart
2024-05-29 05:01:46.742 26443-26443 yang                    I  com.yang.app.MainActivity@54d9d4e onResume
2024-05-29 05:01:49.573 26443-26443 yang                    I  com.yang.app.MainActivity@54d9d4e onPause
2024-05-29 05:01:49.609 26443-26443 yang                    I  com.yang.app.MainActivity@4c77c18 onCreate
2024-05-29 05:01:49.621 26443-26443 yang                    I  com.yang.app.MainActivity@4c77c18 onStart
2024-05-29 05:01:49.622 26443-26443 yang                    I  com.yang.app.MainActivity@4c77c18 onResume
2024-05-29 05:01:49.983 26443-26443 yang                    I  com.yang.app.MainActivity@54d9d4e onStop
2024-05-29 05:01:49.984 26443-26443 yang                    I  com.yang.app.MainActivity@54d9d4e onSaveInstanceState

singleTop单顶模式

  • 如果Activity位于Activity栈的栈顶,会复用这个实例,并回调onNewIntent()方法。没有处于栈顶,还会继续创建新的实例
2024-05-29 06:58:47.124  2160-2160  yang                    I  com.yang.app.MainActivity@54d9d4e onCreate
2024-05-29 06:58:47.126  2160-2160  yang                    I  com.yang.app.MainActivity@54d9d4e onStart
2024-05-29 06:58:47.128  2160-2160  yang                    I  com.yang.app.MainActivity@54d9d4e onResume
2024-05-29 06:58:49.444  2160-2160  yang                    I  com.yang.app.MainActivity@54d9d4e onPause
2024-05-29 06:58:49.444  2160-2160  yang                    I  com.yang.app.MainActivity@54d9d4e onNewIntent
2024-05-29 06:58:49.445  2160-2160  yang                    I  com.yang.app.MainActivity@54d9d4e onResume

singleTask单任务模式

  • 当前Activity栈只会存在这一个Activity实例,如果Activity位于Activity栈的栈顶,会复用这个实例,并回调onNewIntent()方。如果没有处于Activity栈的栈顶,会清除要启动的Activity上面的所有Activity
2024-05-29 07:54:20.568  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onCreate
2024-05-29 07:54:20.576  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onStart
2024-05-29 07:54:20.579  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onResume
2024-05-29 07:54:23.027  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onPause
2024-05-29 07:54:23.054  7933-7933  yang                    I  com.yang.SecondActivity@7657d8c onCreate
2024-05-29 07:54:23.065  7933-7933  yang                    I  com.yang.SecondActivity@7657d8c onStart
2024-05-29 07:54:23.066  7933-7933  yang                    I  com.yang.SecondActivity@7657d8c onResume
2024-05-29 07:54:23.421  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onStop
2024-05-29 07:54:23.422  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onSaveInstanceState
2024-05-29 07:54:25.331  7933-7933  yang                    I  com.yang.SecondActivity@7657d8c onPause
2024-05-29 07:54:25.335  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onRestart
2024-05-29 07:54:25.338  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onStart
2024-05-29 07:54:25.338  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onNewIntent
2024-05-29 07:54:25.338  7933-7933  yang                    I  com.yang.app.MainActivity@4db5049 onResume
2024-05-29 07:54:25.683  7933-7933  yang                    I  com.yang.SecondActivity@7657d8c onStop
2024-05-29 07:54:25.684  7933-7933  yang                    I  com.yang.SecondActivity@7657d8c onDestroy

singleInstance单实例模式

  • 所有Activity栈只能存在这一个Activity实例,意味着这个Activity栈不会有其他Activity的实例。如果singleInstance启动模式启动的Activity再去启动的另外的Activity,会再创建一个新的Activity栈,另外的Activity存在这个新创建的栈中。从Recent最近打开任务可以看到两个应用窗口
  • 查看当前任务栈启动Activity数量
val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val numActivities = activityManager.appTasks[0].taskInfo.numActivities
Log.i("yang", "当前{$this}栈启动Activity数量 = $numActivities")// log result
2024-05-29 08:14:09.137 11888-11888 yang                    I  当前{com.yang.app.MainActivity@8ae877c}栈启动Activity数量 = 1
2024-05-29 08:14:09.137 11888-11888 yang                    I  com.yang.app.MainActivity@8ae877c onCreate
2024-05-29 08:14:09.147 11888-11888 yang                    I  com.yang.app.MainActivity@8ae877c onStart
2024-05-29 08:14:09.149 11888-11888 yang                    I  com.yang.app.MainActivity@8ae877c onResume
2024-05-29 08:14:11.872 11888-11888 yang                    I  com.yang.app.MainActivity@8ae877c onPause
2024-05-29 08:14:11.902 11888-11888 yang                    I  当前{com.yang.SecondActivity@754bbdb}栈启动Activity数量 = 1
2024-05-29 08:14:11.903 11888-11888 yang                    I  com.yang.SecondActivity@754bbdb onCreate
2024-05-29 08:14:11.915 11888-11888 yang                    I  com.yang.SecondActivity@754bbdb onStart
2024-05-29 08:14:11.916 11888-11888 yang                    I  com.yang.SecondActivity@754bbdb onResume
2024-05-29 08:14:12.286 11888-11888 yang                    I  com.yang.app.MainActivity@8ae877c onStop
2024-05-29 08:14:12.286 11888-11888 yang                    I  com.yang.app.MainActivity@8ae877c onSaveInstanceState
http://www.lryc.cn/news/357089.html

相关文章:

  • 乐鑫ESP串口驱动安装,安装cp210x驱动
  • Django缓存
  • Python 元组
  • JAVA面试题大全(十八)
  • 如何利用Firebase Hosting来托管网站
  • 揭秘“循环消费”模式:消费即收益,购物新体验
  • 图片怎样在线改像素大小?电脑快速修改图片大小的方法
  • SELINUX=enforcing时无法启动httpd服务的解决方案(semanage命令以及setroubleshoot-server插件的妙用)
  • 【C++】list的使用方法和模拟实现
  • 【物联网实战项目】STM32C8T6+esp8266/mqtt+dht11+onenet+uniapp
  • Pyhton 二叉树层级遍历
  • Flutter 中的 FadeTransition 小部件:全面指南
  • 缓存存储器:性能提升的关键
  • 『大模型笔记』工程师的LLMs简介!
  • Vue中的常用指令
  • 百度页面奔跑的白熊html、css
  • Day-02面向对象
  • Sentinel-2 哨兵二号数据介绍及下载
  • 阿里智能信息数据挖掘复盘
  • Flutter中图片是怎么在flutter上呈现出来的?
  • 使用 CNN 训练自己的数据集
  • 自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计
  • 基于VMware安装Linux虚拟机
  • 6、phpjm混淆解密和php反序列化
  • Codeforces Round 909 (Div. 3) E. Queue Sort(模拟 + 贪心之找到了一个边界点)
  • 设计模式基础——设计原则介绍
  • 【校园网网络维修】当前用户使用的IP与设备重定向地址中IP不一致,请重新认证
  • 如何找到docker的run(启动命令)
  • Spring如何管理Bean的生命周期呢?
  • Java网络编程:UDP通信篇