`
iaiai
  • 浏览: 2195580 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

效果对比如下:

白屏

白屏优化
  • 大小: 6.8 KB
  • 大小: 8.3 KB
  • 大小: 2.2 MB
  • 大小: 1.9 MB
分享到:
评论

相关推荐

    解决Flutter启动页白屏问题,flutter启动显示图片

    Android原生的白屏问题可以通过为 Launcher Activity 设置 windowBackground 解决,而 Flutter 也是基于此办法,同时优化了 Flutter 初始化阶段的白屏问题。之所以新建的项目是白屏,因为flutter对此的方法默认是...

    flutter_start_page.zip

    Flutter 安卓端启动页全屏+沉浸式状态栏 Flutter 安卓端启动页全屏+沉浸式状态栏 Flutter 安卓端启动页全屏+沉浸式状态栏 Flutter 安卓端启动页全屏+沉浸式状态栏 Flutter 安卓端启动页全屏+沉浸式状态栏 Flutter ...

    Flutter 启动页白屏设置/启动画面设置

    新建flutter项目 刚启动是有段时间的白屏 ,这个是系统开机的白屏,可以更换成自己的启动画面,设置如下: launch_backgroud.xml里修改成自己的图片名称,src表示图片的名称不带扩展名,mipmap表示对应各种分辨率下的图片...

    flutter与Android原生通信

    flutter与Android原生通信

    flutter plugin-android-lifecycle

    Flutter的flutter_plugin_android_lifecycle插件是一个Flutter插件,用于访问Android Lifecycle objects。它可以帮助其他Flutter插件在Android上更好地集成。...如果遇到任何问题,可以参考官方文档或相关教程来解决。

    android-flutter-demo.zip

    这个“android-flutter-demo.zip”中的示例可能包含了一个简单的Flutter屏幕,展示了如何在Android应用中启动Flutter界面,以及如何通过Platform Channels实现Flutter与Android之间的交互。通过研究这个Demo,开发者...

    Flutter 通知栏通知 - android 版

    当需要调用Android原生功能,如发送通知时,我们需要创建一个`MethodChannel`实例,并在Flutter端定义方法,然后在Android端实现对应的方法处理逻辑。 1. **创建MethodChannel** 在Flutter端,创建一个`...

    Flutter与Android Native原生进行混合开发,相互跳转,进行通信_示例Demo

    Flutter与Android Native原生进行混合开发(flutter module),Flutter和Android Native相互跳转,Flutter和Android Native进行通信的示例Demo 有Flutter官方API和引入FlutterBoost两种方式,具体可以看我的博客 第一...

    【flutter】搭建Android本地web服务项目-源码

    这是一个flutter项目,用AndroidStudio开发工具创建,主要用于实现Android APP运行本地web服务站点的功能,仅支持部署静态网页托管,在WIFI局域网内访问,相关学习文章请访问...

    Android Studio 升级到4.1后需更新flutter、dart版本

    标题中提到的"Android Studio 升级到4.1后需更新flutter、dart版本",意味着当你将Android Studio升级到4.1时,原有的Flutter和Dart插件可能与新版本的IDE不兼容,因此需要同步更新。这对保持开发环境的稳定性和确保...

    flutter和Android平台通信

    1. 插件架构:Flutter插件是Flutter与原生平台交互的基础,它由两部分组成:Flutter端的Dart代码和原生端(Android、iOS)的代码。Flutter端的代码负责暴露API给Flutter应用,而原生端的代码则实现了这些API的具体...

    android百度地图嵌入flutter demo

    本示例"android百度地图嵌入flutter demo"就是为了解决这个问题,它展示了如何在Flutter应用中集成并动态更新百度地图,调通日期为2021年5月8日。 首先,我们需要理解Flutter的`Platform Channel`机制。这是Flutter...

    使用Flutter开发的常见的App启动页

    在Flutter框架下,我们可以利用其强大的UI构建能力和跨平台特性,轻松创建出富有吸引力且功能完备的启动页。下面我们将详细探讨如何在Flutter中实现一个常见的App启动页。 首先,我们需要理解Flutter的生命周期。在...

    Flutter androidstudio-配置.doc

    本文将详细介绍如何在Android Studio中配置Flutter环境,以便顺利启动和运行Flutter项目。 首先,我们需要确保满足Flutter开发的基本系统需求。Flutter支持Windows、macOS和Linux操作系统。对于Windows用户,按照...

    android studio Flutter Plugin~flutter 插件

    Android Studio作为Android开发的主要集成开发环境(IDE),为Flutter提供了一整套的插件支持,使得在Android Studio中开发Flutter应用变得非常便捷。本文将详细阐述Android Studio的Flutter插件以及如何使用它来...

    flutter android.rar

    本示例将详细介绍如何将Flutter项目打包成Android Archive (AAR) 文件,并在Android原生项目中进行使用。 首先,我们需要确保已经安装了Flutter SDK并配置好了环境变量。在命令行中,我们可以使用`flutter doctor`...

    flutter_hotpatch:Android端flutter资源和代码的热更新,实验性项目,勿用于生产环境-android

    只能下发flutter代码,不能下发Android代码(这也不算问题) 2.flutter引擎版本最好一致 3.点击热更新时必须保证fluttr engine没有初始化过,也就是app运行时没有初始化过flutter engine 原理: 1.资源的热更新是...

    Android 与flutter混合开发以及消息传递示例

    这可能包括在Android端调用Flutter的函数,如显示弹窗、更新UI等,以及Flutter向Android发送事件,比如获取设备信息、调用系统服务等。 消息传递的另一种方式是使用`EventChannel`。与`MethodChannel`不同,`...

Global site tag (gtag.js) - Google Analytics