sob13600 发表于 2021-3-14 08:59

Android启动体验优化--启动白屏黑屏优化

## 背景:在我们点击手机桌面应用程序图标->到app渲染出第一个activity的这个过程中,不知道大家有没有留意到,当app很久没有打开过,或者是app杀死了,再打开的时候,会有那么一瞬间的白屏或者黑屏??

这个时间取决于你的手机性能,差一点的手机特别明显

**①这个白色或者黑色,是什么?**

**②如何修改这个颜色?**

**③如何优化体验?**

#### 问题1:
从配置文件的主题入手,把这个颜色挖出来。
小司机坐稳扶好。

当我们创建一个项目之后,打开配置文件,可以看到application标签下有个theme,这个theme有一个默认的配置,红色框地方,我们打开这个主题看看(Ctrl + 鼠标左键可以进入)
![图片描述](https://imgs.sunofbeaches.com/group1/M00/00/0F/rBsADV4lwuiACb7RAARvyRHpXys051.png)


进入之后:
![图片描述](https://imgs.sunofbeaches.com/group1/M00/00/0F/rBsADV4lw7CAZZTtAAJzncNIuSc697.png)

这个主题是继承其他主题,OK,一直挖,注意留意属性,一直到根主题的时候
我们发现是这样的:
![图片描述](https://imgs.sunofbeaches.com/group1/M00/00/0F/rBsADV4lxAOAN9eJAAaqcWxBSUA800.png)

留意:
```
      <item name="windowBackground">@drawable/screen_background_selector_light</item>

```

这是窗体背景,就是这个东西,我们点击桌面icon,到第一个activity创建完成的中间那段时间,我们看到的,就是这个**windowBackground**
打开这个背景的xml:
![图片描述](https://imgs.sunofbeaches.com/group1/M00/00/0F/rBsADV4lxPGARO7GAAVL7OSmg9s164.png)
这个预览的颜色,就是我们看到的那个不和谐的颜色。


#### 问题2:修改这个背景,我们可以复写这个属性,修改成其他颜色或者图层,达到一个更好的体验
继承这个默认主题,然后重新赋值给window background,就达到了效果
![图片描述](https://imgs.sunofbeaches.com/group1/M00/00/0F/rBsADV4lxcqAZXjLAAPtgntesGI817.png)

这个背景,可以是一个具体的png,jpg图片,也可以是一个xml资源文件(图层)
如果是一个具体图片资源,不同手机的宽高比是不同的,会变形,如果想不懂会变形的,自己好好琢磨下。

#### 问题3:优化
上面说了,不能放图片,会变形,那,放什么才不会变形?
自定义图层!!
看效果:
![图片描述](https://imgs.sunofbeaches.com/group1/M00/00/0F/rBsADV4lxzeAa6q5AAa8mJ7zVeM658.png)

就好像我们平时写布局一样,定制一个资源的位置,这样配置可以做到启动页更加美观,当然这个xml资源可以增加多个图片资源,定义在不同的位置,(顶部,中间,底部)背景颜色什么的都可以。这个背景是我们启动优化看到的一瞬间的内容。
最后,我们把这个xml文件配置到window background上面就可以了,把启动页面的主题设置下。
![图片描述](https://imgs.sunofbeaches.com/group1/M00/00/0F/rBsADV4lyDOARfepAAP5L7DeiPI018.png)

这样启动优化就完成了,
感谢你能看到这里,如果不明白我在干什么,或者不知道这样做的好处,以后当你遇到启动页优化,就会体会到了~~

再次强调:这个启动优化针对点击桌面icon之后到第一个activity渲染之后的那一段时间(产生的白屏或者黑屏)

贝天 发表于 2021-3-22 10:45

补充一下白屏或者黑屏为什么会出现,Android App在冷启动的时候(不存在对应App的进程)会先创建进程,在启动指定的Main Activity 的时候回先创建Window ,这个在Android源码里可以看到,这个window就是PhoneWindow,我们看到的白屏或者黑屏就是这个window,至于其颜色与我们设置的Activity Theme决定。

详情可查看https://blog.csdn.net/u010340035/article/details/78501610

sob13600 发表于 2021-3-14 09:38

lanxiqingmo 发表于 2021-3-14 09:07
这个就是安卓动画优化不好吧,虽然在安卓8.0速度就超过苹果了,但是动画做的不好,流畅度还是感觉ios快,原生的 ...

不是动画问题,是第一次打开app的时候,创建app进程,到看到第一个页面渲染完成这个过程中。就是白屏的。这是系统机制问题。
当然了,现在Android上面的配置很高,这个创建的过程的时候,会缩短,到了你觉得还行的感觉。
如果换一台低配的手机,这个问题就会特别明显。
而且现在绝大部分的app都做了文章这种启动优化,从点击到第一个页面展示中间设置了默认元素。
默认开发的app是没有的。
后台管不了,是系统机制问题,有很多app利用bug一直活着,吃系统资源。
现在国内很多厂商都有后台管理机制,比如小米这种,可以完全禁止app自启动。禁止别的app拉活。

lanxiqingmo 发表于 2021-3-14 09:07

这个就是安卓动画优化不好吧,虽然在安卓8.0速度就超过苹果了,但是动画做的不好,流畅度还是感觉ios快,原生的安卓还得用冰箱黑域这些,连后台也管不了也是服了{:17_1061:}

Cashion 发表于 2021-3-14 09:48

现在的手机操作系统都有做相关优化,开发者没必要自己再弄了,我现在的手机已经感知不强了

bin13020 发表于 2021-3-14 10:00

小白什么不懂,挺难的

eoncn 发表于 2021-3-14 10:07

的确有些红米4 5百的机子有这个问题,一直没有去管,周一去试下

微凉破晓 发表于 2021-3-14 10:10

老机器又复活了哈哈哈

今夜星空真美 发表于 2021-3-14 10:15

老手机优化可以尝试一下

ppss6 发表于 2021-3-14 10:32

两年前的手机,优化的不错

andonuv 发表于 2021-3-14 10:39

老机有救了,新机没问题,谢谢!
页: [1] 2
查看完整版本: Android启动体验优化--启动白屏黑屏优化