Flutter Android端启动白屏问题的解决

作者:Joe_H 时间:2023-10-14 12:03:27 

问题描述

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

问题分析

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

Flutter Android端启动白屏问题的解决

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

Flutter Android端启动白屏问题的解决

直到 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 中的设置如下:


<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@android:color/background_dark" />

<!-- You can insert your own image assets here -->
 <item
   android:bottom="84dp">
   <bitmap
     android:src="@mipmap/launch_image" />
 </item>
</layer-list>

效果对比如下:

Flutter Android端启动白屏问题的解决

白屏

Flutter Android端启动白屏问题的解决

白屏优化

来源:https://www.jianshu.com/p/f94ee876afa6

标签:Flutter,Android
0
投稿

猜你喜欢

  • Android webView加载数据时内存溢出问题及解决

    2021-06-24 13:19:28
  • SpringMVC Mybatis配置多个数据源并切换代码详解

    2023-10-30 15:33:43
  • Android UI控件ExpandableListView基本用法详解

    2021-12-26 22:20:50
  • C# WinForm快捷键设置技巧

    2023-07-20 07:03:13
  • Android编程获取通知栏高度的方法

    2023-10-23 22:50:24
  • C#私有构造函数使用示例

    2021-12-31 02:14:53
  • 基于Java SWFTools实现把pdf转成swf

    2023-09-01 20:19:02
  • C#中使用ADOMD.NET查询多维数据集的实现方法

    2023-10-27 05:38:15
  • Java class文件格式之特殊字符串_动力节点Java学院整理

    2022-02-11 14:45:59
  • Lombok基本注解之@SneakyThrows的作用

    2021-12-24 15:30:47
  • java 代码块与静态代码块加载顺序

    2021-08-01 15:19:35
  • Android安装apk文件并适配Android 7.0详解

    2022-11-11 01:41:28
  • Spring整合Quartz开发代码实例

    2022-03-12 16:37:26
  • Android 图片缩放与旋转的实现详解

    2023-03-10 10:57:41
  • java实现静默加载Class示例代码

    2023-12-18 22:06:52
  • SpringBoot使用token简单鉴权的具体实现方法

    2022-07-10 14:23:42
  • java读取ftp中TXT文件的案例

    2022-07-07 20:10:11
  • SpringMVC一步到位精通拦截器

    2023-11-25 01:47:45
  • Java基础 Servlet监听器详解

    2022-05-30 20:40:02
  • 轻松实现Android语音识别功能

    2022-09-11 17:42:46
  • asp之家 软件编程 m.aspxhome.com