美文网首页Android开发经验谈Android开发Android开发
我的Android启动优化—【黑白屏优化】

我的Android启动优化—【黑白屏优化】

作者: 谁动了我的代码 | 来源:发表于2023-02-15 16:15 被阅读0次

简述

在Android App使用过程中,对于应用的优化是一个加分项,举个例子,打开你的App需要2秒,人家0.5秒,这就是很大的用户体验上的优化。

问题的产生

在开发中,我们在启动app的时候,屏幕会出现一段时间的白屏或者黑屏,不同设备时间长短不同。很影响用户体验。 首先分析一下,产生这个现象的原因,当我们在启动一个应用时,系统会去检查是否已经存在这样一个进程,如果不存在,就是冷启动。系统和APP本身都有很多工作需要处理。首先系统的服务会先检查startActivity中的intent的信息,然后在去创建进程,最后才是执行启动Acitivy的操作。而我们上面提到的显示白黑屏的问题,就是在这段时间内产生的。

流程图解如下:

image

白屏黑屏解决方案

在自己的中加入windowsbackground,这样,在App启动的时候就会直接弹出设置的背景

image

设置windowbackground为透明的 true

前面两种方法都有一个问题,就是在所有Activity启动的时候都会先显示这个默认的图片,如果是透明的话会出现点了图标没反映的情况

单独制作一个主题

<style name="AppTheme.Launcher">
        <item name="android:windowBackground">@drawable/bg</item>
    </style>
    <style name="AppTheme.Launcher1">
        <item name="android:windowBackground">@drawable/bg</item>
    </style>
    <style name="AppTheme.Launcher2">
        <item name="android:windowBackground">@drawable/bg</item>
    </style>

然后在Menifest中相应的Activity下设置

<activity android:theme="@style/AppTheme.Launcher"

然后在程序中使用

setTheme(R.style.AppTheme);

让APP中所有的activity还是使用以前的样式,这样做就只有启动时才使用自己的样式

介绍下qq中方式,在style中设置下面的属性

关闭预显示
<item name="android:windowDisablePreview">true</item> 
背景设置为空
<item name="android:windowBackground">@null</item>
1234

qq比较牛逼的一点是他在Application中不初始化任何的东西,将启动时间优化到极致,下面会讲到具体的方法

其实大多数应用不需要做到像qq那样启动速度快到极致,像腾讯系、阿里系的一些应用都是只显示一张图片,然后开始显示一个3秒左右的广告,在显示广告的时间里进行一些初始化

TRACE工具分析代码执行时间

黑白屏的优化只是表面上的优化,只是做到让用户觉得启动速度很快,但实际启动速度一点都没变,下面就该介绍真正的启动优化

工欲善其事,必先利器其器,google小姐已经为我们准备好了工具

Debug.startMethodTracing(filePath);
中间为需要统计执行时间的代码
Debug.stopMethodTracing();

或者直接使用Android Device file Explorer导出的文件

adb pull /storage/emulated/0/app1.trace把文件拉出来分析
把pull到电脑上的文件拖到AS中就可以分析了

查看页面启动时间

sdk版本4.4以前

通过命令

adb shell am start -W com.lqr.wechat/com.lqr.wechat.activity.SplashActivity

可以查看页面的启动时间

ThisTime:最后一个启动的Activity的启动耗时;
TotalTime:自己的所有Activity的启动耗时;
WaitTime: ActivityManagerService启动App的Activity时的总时间(包括当前Activity的onPause()和自己Activity的启动)。

AM.java在系统源码中的路径

frameworks\base\cmds\am\src\com\android\commands\am
image

在Android开发中还有许多要优化的东西,这篇主要理解了启动优化中的黑白屏优化。其主要为问题的产生及解决方案;更多有关Android优化的知识;可以参考《Android核心优化类目》里面记录了大部分的核心优化板块技术。

最后APP启动时间优化

优化方案:

1.开线程

内部没有创建handler 没有操作UI的事件 对异步要求不高

2.懒加载

用到的时候再初始化,如网络,数据库操作

相关文章

  • App白屏和启动优化的一些思路

    App启动优化 App启动优化原理与技术方案 启动优化 黑白屏问题 启动页面主题设置为图片 启动页面,不要再onC...

  • 我的Android启动优化—【黑白屏优化】

    简述 在Android App使用过程中,对于应用的优化是一个加分项,举个例子,打开你的App需要2秒,人家0.5...

  • Android性能优化--内存优化

    转载自:Android性能优化--内存优化 上一篇文章关于Android性能优化--启动优化探讨了启动优化相关的知...

  • Android系统原理

    Android性能优化(一)App启动原理分析及启动时间优化 - CSDN博客 Android性能优化(二)布局渲...

  • 收集_性能优化

    Android性能优化(一)之启动加速35%Android性能优化(二)之布局优化面面观Android性能优化(三...

  • Android 启动优化

    Android 启动优化 基本操作 将启动页主题背景设置成闪屏页图片这么做的目的主要是为了消除启动时的黑白屏,给用...

  • Android性能优化之启动速度优化

    Android性能优化之启动速度优化 Android app 启动速度优化,首先谈谈为什么会走到优化这一步,如果一...

  • App启动优化

    1.操作系统启动流程和Launcher点击事件流程2.启动方式以及首次启动3.黑白屏优化4.启动时间内代码优化 操...

  • Android性能优化之路

    Android性能优化目录 1 Android性能优化之内存泄漏2 Android性能优化之启动速度3 Andro...

  • Android性能优化学习笔记

    参考 Android App优化, 要怎么做? 优化类型 App启动优化 布局优化 响应优化 内存优化 电池使用优...

网友评论

    本文标题:我的Android启动优化—【黑白屏优化】

    本文链接:https://www.haomeiwen.com/subject/jwcukdtx.html