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

Android App 启动状态有几种?

startup state

  • Android 启动状态(startup state)
    • 1.1、冷启动(Cold Start)
    • 1.2、温启动(Warm Start)
    • 1.3、热启动(Hot Start)
    • 1.4、后台启动(Background Start)
  • 优化(套话)待续
  • 参考地址

Android 启动状态(startup state)

1.1、冷启动(Cold Start)

当应用尚未在内存中运行时,用户点击应用图标或通过其他方式启动应用时,会触发冷启动。
在这种情况下,应用需要从头开始加载并初始化,这可能需要一些时间,用户可能会感到启动时间较长。

启动流程:
https://blog.csdn.net/weixin_35691921/article/details/116143407?spm=1001.2014.3001.5501

启动时长:
可以理解为Application.onCreate() 到 Activity.onResume()

或者使用adb命令与性能测试工具

adb shell am start -W -n com.example.package/.MainActivity

1.2、温启动(Warm Start)

温启动介于冷启动和热启动之间。当应用在内存中部分被回收但仍有一些资源保留时,再次启动应用将触发温启动。这种情况下,应用需要重新初始化一些资源,但不需要完全从头开始加载。

温启动有很多场景,例如:

  • 用户按连续按返回退出了app,然后重新启动app;

  • 由于系统收回了app的内存,然后重新启动app。

  • 进程仍然存在而Activity销毁

温启动的场景可以使用:onSaveInstanceState去保存需要的数据状态,在重建的时候可以在onCreate和onRestoreInstanceState中的参数去获取销毁前保存的数据。

Configuration 变换和主题切换也会触发:onSaveInstanceState和onRestoreInstanceState

App运行之后切换横竖屏,通过上面代码实验得到的结果是:

I/com.zj.activitylifecycle.LifeCycleActivity: —> onCreate
I/com.zj.activitylifecycle.LifeCycleActivity: —> onStart
I/com.zj.activitylifecycle.LifeCycleActivity: —> onResume
I/com.zj.activitylifecycle.LifeCycleActivity: —> onPause
I/com.zj.activitylifecycle.LifeCycleActivity: —> onSaveInstanceState
I/com.zj.activitylifecycle.LifeCycleActivity: —> onStop
I/com.zj.activitylifecycle.LifeCycleActivity: —> onDestory
I/com.zj.activitylifecycle.LifeCycleActivity: —> recreate
I/com.zj.activitylifecycle.LifeCycleActivity: —> onStart
I/com.zj.activitylifecycle.LifeCycleActivity: —> onRestoreInstanceState
I/com.zj.activitylifecycle.LifeCycleActivity: —> onResume
————————————————
原文链接:https://blog.csdn.net/mypotatolove/article/details/82217620

1.3、热启动(Hot Start)

重新启动,而不是从完全关闭的状态开始。

当应用已经在内存中运行,但用户在应用中导航到其他界面或按下 Home 按钮后,再次返回应用时,会触发热启动。
热启动相对较快,因为应用的部分状态和资源已经存在于内存中。

1.4、后台启动(Background Start)

后台启动指的是当应用在后台运行,而不在前台显示时触发的启动方式。这可能是由于应用接收到推送通知、执行定时任务或其他后台事件触发的。后台启动通常是对用户不可见的,因为应用不会立即出现在屏幕上。

优化(套话)待续

Android应用的冷启动优化是一个复杂而关键的任务。以下是一些具体的优化策略,帮助你提高Android应用的冷启动性能:

  1. 使用启动页(Splash Screen): 引入一个启动页,显示应用程序的标志或其他欢迎信息。这不仅可以为用户提供启动反馈,还可以让应用在后台进行一些初始化工作,从而减少用户感知的启动时间。

  2. 延迟加载: 通过将不是必需立即加载的组件延迟初始化,可以减小应用程序启动时的初始负担。使用懒加载模式,只有在需要时才初始化和加载相关组件。

  3. 应用程序分割(App Slicing): 使用应用程序分割特性,以便将应用程序的不同部分进行拆分并仅在需要时下载。这有助于减小APK文件的大小,加快应用程序下载和安装的速度。

  4. 减小APK大小: 优化资源、压缩图片、删除不必要的资源文件和代码,以减小APK的大小。这不仅有助于更快地下载和安装应用程序,还有助于加快应用的启动速度。

  5. 使用ProGuard进行代码混淆和优化: ProGuard是一个代码混淆和优化工具,可以帮助减小APK大小并提高运行时性能。确保在发布应用程序之前使用ProGuard来混淆和优化代码。

  6. 使用合适的数据存储: 使用合适的本地存储方式,以减小启动时需要加载的数据量。尽可能使用轻量级的数据存储,例如SharedPreferences或SQLite数据库。

  7. 异步初始化: 将应用程序的初始化任务异步执行,确保不会阻塞主线程。可以使用AsyncTaskLoader、或者其他异步加载框架。

  8. 合理使用多线程: 在合适的情况下,使用多线程来进行一些耗时的初始化工作。但要注意在主线程上执行与UI相关的任务,以确保良好的用户体验。

  9. 优化布局文件: 精简布局文件,避免过度嵌套和不必要的层次结构。这有助于提高布局文件的加载速度。

  10. 使用预加载(Preloading): 在应用启动时预加载即将使用的资源和数据,以减小用户导航到相关页面时的加载时间。

  11. 性能分析和调试工具: 使用Android Studio提供的性能分析工具来检查应用程序的性能瓶颈,例如CPU使用率、内存使用情况等。这有助于精确定位问题并进行优化。

  12. 适配Android Vitals: 关注Android Vitals中的启动时间指标,如应用程序启动时间(App Start Time),确保在各种设备上都有较好的性能。

通过结合以上策略,可以显著提高Android应用的冷启动性能,提升用户体验。最终的优化方案可能需要根据具体应用的特点和需求进行调整。

参考地址

Android性能优化(一)App启动原理分析及启动时间优化:
https://blog.csdn.net/sakuramashiro/article/details/78986167

Android 性能优化:使用 TraceView 找到卡顿的元凶:https://www.ituring.com.cn/article/273967

http://www.lryc.cn/news/238408.html

相关文章:

  • Spring Cloud Alibaba Sentinel 简单使用
  • nvm切换node后,没有npm
  • Redis-高性能原理剖析
  • ORA-00600 【3948】,ORA-00600 【3949】
  • flink 查看写入starrocks的数据量 总行数
  • 全链路压测的步骤及重要性
  • 使用Python实现几种底层技术的数据结构
  • 前端面试题【72道】
  • OpenGL 绘制文本(QPainter)
  • windows电脑连接Android和iPhone真机调试
  • windows上 adb devices有设备 wsl上没有
  • 释放搜索潜力:基于Docker快速搭建ES语义检索系统(快速版),让信息尽在掌握
  • JS--localStorage设置过期时间的方案(有示例)
  • JNPF开发平台凭什么火?
  • 关于“计算机中由于找不到msvcr120.dll,无法继续执行代码5种解决方法
  • LR学习笔记——基本面板
  • Cloud 微服务
  • 若依前后端分离版,快速上手
  • Java-抽象类、抽象方法
  • 南京--ChatGPT/GPT4 科研实践应用
  • 【VRTK】【VR开发】【Unity】7-配置交互能力和向量追踪
  • 【JS】Chapter14-深入面向对象
  • RabbitMQ消息队列快速入门
  • django DRF认证组件
  • 操作系统(三)| 进程管理上 进程状态 同步 互斥
  • Postman插件如何安装(一)
  • 在回调之间共享数据
  • 我在CSDN开组会1-蒙特卡洛模拟在矿床学的应用展望
  • Jmeter 性能测试基础!
  • 【赠书第6期】MATLAB科学计算从入门到精通