网站开发流程电话,企业网站开发用什么,电脑浏览器网页打不开是什么原因,海报设计理念一、应用启动的三种状态
冷启动#xff1a;系统不存在App进程#xff08;APP首次启动或APP被完全杀死#xff09;时启动APP#xff0c;此时#xff0c;APP的启动将经历两个阶段#xff1a;
1、创建app进程#xff1a;系统启动应用程序进程和虚拟机#xff0c;创建app…一、应用启动的三种状态
冷启动系统不存在App进程APP首次启动或APP被完全杀死时启动APP此时APP的启动将经历两个阶段
1、创建app进程系统启动应用程序进程和虚拟机创建app进程app启动后第一时间显示空白window
2、创建应用程序对象、初始化、加载资源:创建application对象、创建主Activity对象、并执行onCreate方法、创建和显示应用程序主界面。
热启动当我们按了Home键或其它情况app被切换到后台再次启动app的过程。热启动是指应用程序在保留应用程序进程的情况下再次启动的启动方式这种启动方式相对于冷启动要快得多因为应用程序的许多资源和进程已经存在于系统内存中不再需要重新创建和加载。
温启动温启动包含了冷启动的一些操作由于app进程依然在温启动只执行冷启动的第二阶段这代表着它比热启动有更多的开销。 这三种启动状态中冷启动是一个从无到有的过程最为耗时也是下面主要的优化方向。
二、冷启动优化方式
1、冷启动白屏优化
在app启动之后会立即展示一个空白的window用于告诉用户当前正在启动app但是这种方式显然不够美观下面介绍两种方式对这种现象进行优化
1、禁用app启动时window预览功能不显示空白的window
在首屏Activity中添加一个主题禁用window预览功能并在manifest中使用
resources!-- Base application theme. --style nameAppTheme parentTheme.AppCompat.Light.DarkActionBar!-- Customize your theme here. --item namecolorPrimarycolor/colorPrimary/itemitem namecolorPrimaryDarkcolor/colorPrimaryDark/itemitem namecolorAccentcolor/colorAccent/item/style!--禁用预览功能主题--style nameAppSpalshNoPreviewTheme parentAppThemeitem nameandroid:windowFullscreentrue/itemitem namewindowNoTitletrue/item//禁用预览item nameandroid:windowDisablePreviewtrue/item/style
/resources在manifest中使用
activity android:name.SplashActivityandroid:themestyle/AppSpalshNoPreviewThemeintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity
此时冷启动app会卡顿一会再进入首activity,感觉就像手机卡了用户体验不是很好不建议使用 2、给启动页Activity添加一个主题设置一个背景
!--替换首屏的背景的主题--style nameAppSpalshBackgroundTheme parentAppTheme!--设置一个背景图片--item nameandroid:windowBackgroundmipmap/wall/itemitem nameandroid:windowFullscreentrue/itemitem namewindowNoTitletrue/item/style然后在manifest中使用
activity android:name.SplashActivityandroid:themestyle/AppSpalshBackgroundThemeintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter
/activity此时白屏就会被替换成首Activity主题中添加的背景图片从而使程序更加美观也会让用户有更好的体验
3、使用jetpack splashScreen
参考深度探讨 Jetpack SplashScreen 如何重塑应用启动画面_setkeepvisiblecondition-CSDN博客
2、主页面布局优化
1、减少布局嵌套层次复杂布局可以使用ConstraintLayout和RelativeLayout来替换LinearLayout
2、推荐使用merge标签可以减少一个层级
3、使用ViewStub延迟加载
ViewStubandroid:idid/contentPanelandroid:inflatedIdid/inflatedStartandroid:layoutlayout/delayInflateLayoutandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_centerInParenttrue/4、去掉多余背景色,减少复杂shape的使用
3、Application和主Activity的onCreate方法中的操作优化
1、Application的onCreate流程对于大型的APP来说通常会在这里做大量的通用组件的初始化操作建议一些三方的SDK文件设备线程池等等工具类不放在Application初始化我们可以放到用到的地方才进行初始化操作。如果确实需要在这里初始化可以开启一个子线程来初始化
2、不要在Application和主Activity的onCreate方法中执行耗时操作。