启动优化(解决白屏问题)

来源:互联网 发布:js scroll属性 编辑:程序博客网 时间:2024/06/16 10:09

启动优化(解决白屏问题)


一.启动优化分为什么?

冷启动(Cold Start): 在Android系统中,APP启动时,系统为每个运行的应用至少分配一个进程(多线程应用申请多个进程)。从进程角度讲,应该冷启动的时候,是没有该应用的进程配置信息的(包括 Application ,四大组件等)

或者可以说是属于你第一次打开APP,系统在给你开一个进程!

热启动(Hot Start): 就是你已经打开过APP但是实际上面你使用home键等。就是还存在后台的应用。再次打开的时候算是属于热启动了

二.如何做启动优化?

 

优化方案一:加一张背景图解决白屏问题

1.     首先,新建一个主题 (style)

1.    <!--设置透明标题-->

 <item name="android:windowIsTranslucent">false</item>

    <!—添加背景图-->

<item name="android:windowBackground">@mipmap/center</item>

<!—全屏显示,防止卡死-->

<item name="android:windowFullscreen">true</item>

 

2.然后在AndroidManifast.xml文件中将主题设置给第一个启动的Activity

  <activity    android:name=".MainActivity"    android:theme="@style/splashTheme">

3.然后在修改MainActivity的onCreate中,在setContentView(R.layout.avtivity_main)加载布局之前把主题修改回来

setTheme(R.style.AppTheme);


优化方案二:等界面初始化后再显示解决白屏问题

1.首先,在style里新建一个主题 

<!--去掉标题-->
<itemname="windowNoTitle">true</item>

 

<!--设置透明的背景-->
<itemname="android:windowBackground">@android:color/transparent</item>

<!--设置透明标题-->

<itemname="android:windowIsTranslucent">true</item>
<
item name="android:screenOrientation">portrait</item>

 

2.然后在AndroidManifast.xml文件中将主题设置给第一个启动的Activity

android:name=".MainActivity"
android:theme="@style/AppTheme2">

 

3.然后在修改MainActivity的onCreate中,在setContentView(R.layout.avtivity_main)加载布局之前把主题修改回来

setTheme(R.style.AppTheme);


4.常见的Theme主题

android:theme="@android:style/Theme.Dialog" //Activity显示为对话框模式

android:theme="@android:style/Theme.NoTitleBar" //不显示应用程序标题栏

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不显示应用程序标题栏,并全屏

android:theme="Theme.Light " //背景为白色

android:theme="Theme.Light.NoTitleBar" //白色背景并无标题栏

android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,无标题栏,全屏

android:theme="Theme.Black" //背景黑色

android:theme="Theme.Black.NoTitleBar" //黑色背景并无标题栏

android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,无标题栏,全屏

android:theme="Theme.Wallpaper" //用系统桌面为应用程序背景

android:theme="Theme.Wallpaper.NoTitleBar" //用系统桌面为应用程序背景,且无标题栏

android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系统桌面为应用程序背景,无标题栏,全屏

android:theme="Theme.Translucent" //透明背景

android:theme="Theme.Translucent.NoTitleBar" //透明背景并无标题

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并无标题,全屏

android:theme="Theme.Panel " //面板风格显示

android:theme="Theme.Light.Panel" //平板风格显示


三.启动优化面试题:

1.启动优化包括什么?

.1)冷启动

当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。

2.)热启动

当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application,因为一个应用从新进程的创建到进程的销毁,Application只会初始化一次。

原创粉丝点击