当前位置: 首页 > news >正文

Flutter Android端启动白屏

问题描述

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

问题分析

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

在 Flutter Android 端上,白屏的问题会更加严重,因为除了 Android 应用启动耗时外,还增加了 Flutter 初始化耗时。
直到 Flutter 渲染出第一帧内容,用户才能感知到App启动完成。

解决方案

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

  1. 在项目的 android/app/src/main/res/mipmap-xhdpi/ 目录下添加闪屏图片;
  2. 打开 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练习项目

github.com/zh8637688/F…

相关文章:

  • 九、一级缓存、二级缓存
  • zabbix监控
  • centos7 go ENV 部署
  • swift leetcode-29 Divide Two Integers
  • 后端程序员必备的Linux基础知识
  • Linux服务器后台运行jar包
  • 统计学习方法概论(综合数据挖掘概论)
  • Postfix+dovecot邮件
  • App Icon Gear App 图标制作工具
  • 前端容灾
  • 学习 服务器部署 hello world
  • Java 基础 之 位运算
  • java泛型使用
  • 【RocksDB】TransactionDB源码分析
  • 原生JS动态加载JS、CSS文件及代码脚本
  • [PHP内核探索]PHP中的哈希表
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • create-react-app做的留言板
  • css系列之关于字体的事
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript创建对象的四种方式
  • JSDuck 与 AngularJS 融合技巧
  • Promise面试题,控制异步流程
  • spring boot 整合mybatis 无法输出sql的问题
  • Vue.js 移动端适配之 vw 解决方案
  • 阿里研究院入选中国企业智库系统影响力榜
  • 讲清楚之javascript作用域
  • 开发基于以太坊智能合约的DApp
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 手写一个CommonJS打包工具(一)
  • 算法-图和图算法
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 阿里云重庆大学大数据训练营落地分享
  • ​油烟净化器电源安全,保障健康餐饮生活
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Panda3d 碰撞检测系统介绍
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $forceUpdate()函数
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (Ruby)Ubuntu12.04安装Rails环境
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)appium-desktop定位元素原理
  • (一)UDP基本编程步骤
  • ./configure、make、make install 命令
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .net解析传过来的xml_DOM4J解析XML文件
  • @Import注解详解
  • @Responsebody与@RequestBody