Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长。这篇文章主要介绍了Flutter Android端启动白屏问题的解决。感兴趣的小伙伴们可以参考一下

问题描述

Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长。

问题分析

其实启动白屏的问题在Android原生应用上也是一个常见问题,大致是因为从用户点击 Launcher Icon 到应用首页显示之间,Android 系统在完成应用的初始化工作,其流程如下:

在 Flutter Android 端上,白屏的问题会更加严重,因为除了 Android 应用启动耗时外,还增加了 Flutter 初始化耗时。

直到 Flutter 渲染出第一帧内容,用户才能感知到App启动完成。

解决方案

解决方案很简单,Android原生的白屏问题可以通过为 Launcher Activity 设置 windowBackground 解决,而 Flutter 也是基于此办法,同时优化了 Flutter 初始化阶段的白屏问题(覆盖一个launchView),只用两步设置便能解决 Flutter 中白屏问题。

在项目的 android/app/src/main/res/mipmap-xhdpi/ 目录下添加闪屏图片;

打开 android/app/src/main/res/drawable/launch_background.xml 文件,这个文件就是闪屏的背景文件,具体如何设置可以查阅 Android Drawable,我在 demo 中的设置如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:drawable="@android:color/background_dark" />

 

  

  <item

    android:bottom="84dp">

    <bitmap

      android:src="@mipmap/launch_image" />

  item>

layer-list>

效果对比如下:

白屏

更多相关文章

  1. Android(安卓)Studio打不开,无法启动,无反应的解决方案
  2. android init.rc 到底在哪里?
  3. Android(安卓)init 启动过程分析(一)
  4. android activity 应该知道的一切
  5. Android集成讯飞语音、百度语音、阿里语音识别
  6. Android手机GPU真弱
  7. 自定义TextView跑马灯效果可控制启动/停止/速度
  8. react-native启动流程(android端)
  9. Android(安卓)重学系列 资源管理系统 资源的初始化加载(上)

随机推荐

  1. Android访问Web service
  2. 在android使用i2c tools访问i2c
  3. android 模拟器不能上网问题
  4. android ndk 基数排序
  5. Android文件解压工具类
  6. android发展计划,技术栈
  7. Android(安卓)对话框【Dialog】去除白色
  8. 在屏幕上方是actionBar tab的ViewPager页
  9. Android(安卓)运行时权限库
  10. Android(安卓)中文 API (20) ―― DatePick