Activity相关知识点总结

本文深入解析Android中Activity的生命周期,包括各个状态转换的过程,如创建、启动、暂停、停止、重启、销毁等阶段的方法调用顺序。同时,探讨了不同场景下Activity的状态变化,如点击Home键、跳转至新Activity及返回时的生命周期流程。此外,还介绍了四种启动模式的特点及其应用场景,以及Activity的热启动和冷启动的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Activity的生命周期方法有哪些
onCreate()

onStart()

onRestart()

onResume()

onPause()

onStop()

onDestory()

在这里插入图片描述

2.当Activity A 被创建时,会走什么样的生命周期
当Activity被创建时,流程是:Activity启动->onCreate()->onStart()->onResume()
3.当Activity A 被创建后,点击Home键,会走什么样的生命周期了
 当点击Home键时,流程是:Activity不可见->onPause()->onStop()
4.当Activity A 被创建后,跳转到新的Activity B,Activity A 和 Activity B 分别会走什么样的生命周期?
  Activity A的流程是 : onPause() ->   onStop() ,但是若Activity B 是透明的主题,那Actvity A 将不走onStop()

  Activity B的流程是 :  onCreate() ->  onStart() -> onResume()
5.当点击返回键时,Activity会走什么样的生命周期?
  Activity A的流程是:onRestart()->onStart()->onResume()


  Activity B的流程是:onPause()->onStop()->onDestory()
6.Activity的四种启动模式
  • Stardand

      默认启动方式。其特点是当跳转某个Activity时,无论该Activity是否有被创建过。都将重新创建一个新的Activity实例放入栈顶
    
  • SingleTop

       栈顶复用模式。其特点时当跳转某个Activity时,会判断该Activity是否在栈顶存在,若在栈顶存在,则直接复用该Activity的实例,调用onNewIntent()方法,不会重新创建一个新的实例,反之不管之前是否创建过该Activity的实例,都将重新创建一个Activity实例放入栈顶
    
  • SingleTask

       栈内复用模式。其特点时当跳转某个Activity时,会判断该Activity是否在栈中存在,若在栈中存在,则直接复用该Activity的实例,调用onNewIntent()方法,不会重新创建一个新的实例,反之将重新创建一个Activity实例放入栈顶
    
  • SingleInstance

        全局单例模式。它的特点和SingleTask类似,唯一的区别是他是单独存在一个进程中的
    
7.Activity的热启动和冷启动
  • 冷启动

    • 定义

        当启动应用时,若后台没有该应用的进程,系统会创建一个进程分配给这个应用
      
    • 特点

         冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再去创建MainActivity类(测量,布局,绘制),最后显示在界面上
      
    • 启动流程

         当点击app的应用图标时,系统会从zygote进程中fork一份进程分配给该应用,之后会创建和初始化Application类,创建MainActivity类,加载Theme主题中的一些样式属性给MainActivity以及配置Activity的一些属性,之后再inflate,当onCreate/onStart/onRestart的方法走完之后才进行measure/layout/draw,最后显示再屏幕上
      
         Application的构造器方法->attachBaseContext()->
         onCreate()->Activity的构造方法->onCrete()->配置主题背景属性->onStart()->onResume()->measure/layout/draw->显示再界面上
      
  • 热启动

    • 定义

         当启动应用时,若后台已有该应用的进程,那么则直接通过该进程启动应用
      
    • 特点

           热启动因为会从已有的进程中启动。所以不会再创建和初始化Application类了,会直接去创建和初始化MainActivity类(测量,布局,绘制)       
      
  • 启动时间检测adb命令

           adb shell am start -W PackageName/ActivityName
    
启动优化方案
  • 尽量不要让Application参与业务的操作,
  • 尽量不要再Application中进行一些耗时操作,即使进行初始化操作也不是必须全部都需要马上促使话,可以将其放入一个线程池中根据优先级进行初始化以及延时操作
  • 不要以静态变量的方式再Application进行数据的保存
  • 尽量减少启动页的布局的复杂性,布局深度,因为View的绘制过程是很耗性能的

,可以将其放入一个线程池中根据优先级进行初始化以及延时操作

  • 不要以静态变量的方式再Application进行数据的保存
  • 尽量减少启动页的布局的复杂性,布局深度,因为View的绘制过程是很耗性能的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值