当前位置: 首页 > 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/358190.html

相关文章:

  • 浅谈网络安全态势感知
  • cesium本地文档-天空盒-arcgis切片404-服务查询
  • OpenMv图片预处理
  • Springboot 实战运用
  • kafka的安装与简单使用
  • 【服务器部署篇】Linux下Node.js的安装和配置
  • 【OrangePi AIpro】香橙派 AIpro 为AI而生
  • AES算法
  • 自主创新助力科技强军,麒麟信安闪耀第九届军博会
  • Android Retrofit 封装模版
  • 【介绍下运维开发】
  • mybatis-plus中多条件查询使用and合or嵌套使用
  • 前端加密的方式汇总
  • ELT 同步 MySQL 到 Doris
  • 100个 Unity小游戏系列七 -Unity 抽奖游戏专题五 刮刮乐游戏
  • 链游:区块链技术的游戏新纪元
  • 格式化字符串
  • 错误信息:Traceback (most recent call last):
  • Thinkphp3.2.3网站后台不能访问如何修复
  • Golang 如何使用 gorm 存取带有 emoji 表情的数据
  • 计算机算法中的数字表示法——原码、反码、补码
  • BGP策略实验
  • 目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解
  • 【busybox记录】【shell指令】mkdir
  • SQL刷题笔记day6-1
  • KITTI数据中pose含义
  • C++模拟实现stack和queue
  • awtk踩坑记录一:awtk-web build.py编译过程笔记
  • docker容器中解决中文乱码
  • Javascript 位运算符(,|,^,<<,>>,>>>)