颤动app慢

spo*_*oss 12 dart flutter

我正在尝试Flutter,我的应用程序在模拟器和真实设备上响应非常慢.我收到这样的警告

跳过51帧!应用程序可能在其主线程上做了太多工作.

我知道Dart是一种单线程编程语言,在Android中,我曾经用new Thread();异步的旧块来解决这个问题.我试图在Flutter中应用相同的内容,然后阅读Future await async和排序,但是当您从互联网上读取数据时,示例似乎正在解决.我的应用程序在这个阶段没有在线阅读任何内容,当我的屏幕有进度对话框,当我打开一个新的屏幕/页面,以及应用程序上的每个动画时,我都会获得跳过的x帧.以下是我遇到问题的类的示例:

_buildContent(){
    return new Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        new InkWell(
          onTap: (){
            Navigator.push(context, new MaterialPageRoute(builder:
                (context) => new LoginScreen()));
          },
          child: new Container(
            height: 150.0,
            width: 150.0,
            child: new Image.asset("images/logo.png", fit: BoxFit.cover,),
          ),
        ),
        new Container(
          margin: const EdgeInsets.all(16.0),
          child: new CircularProgressIndicator(
              value: null,
              strokeWidth: 1.0,
              valueColor: new AlwaysStoppedAnimation<Color>(
                  Colors.white
              )
          ),
        )
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)

我假设跳过的x帧警告是由进度对话框引起的?我有另一个屏幕(登录屏幕),在打开时将小部件动画到位,动画移动得很慢,我可以逐字地看到每个帧都被渲染.是否有在线教程可以帮助解决这个问题或者只是了解Dart的异步编程?

小智 25

尝试flutter run --release在终端中使用发布模式运行您的应用程序。


cha*_*cui 9

调试模式

  • 发射缓慢
  • 启动时闪烁
  • 应用程式大小很大。

因为带有热重载的调试模式。

当您创建发行版APK https://flutter.io/docs/deployment/android

你可以找到

  • 快速午餐
  • 启动时不闪烁
  • 应用程式大小较小(但大于一般的android应用程式)

编辑

https://flutter.io/docs/testing/ui-performance#debug-flags

调试模式启用了不在配置文件或发行版本中运行的其他检查(例如断言),这些检查可能会很昂贵。调试模式还以与释放模式不同的方式执行代码。调试版本会在应用运行时“及时”(JIT)编译Dart代码,但是在将应用加载到应用之前,配置文件和发布版本已预先编译为本地指令(也称为“提前”或AOT)设备。JIT可能导致应用程序暂停进行JIT编译,这本身可能会导致垃圾邮件。

https://github.com/flutter/flutter/wiki/Flutter%27s-modes

设备(包括模拟器,仿真器)上的调试模式:打开世界上所有的断言,包括所有调试信息,启用所有调试器辅助工具(例如,天文台)和服务扩展。优化以加快开发/运行周期。没有针对执行速度,二进制大小或部署进行优化。由扑动运行使用。使用sky / tools / gn --android或sky / tools / gn --ios构建。有时也称为“检查模式”或“慢速模式”。


小智 8

您应该查看Flutter 性能分析指南。您可以尝试不同的配置来诊断您的问题是否在

  • 平台线程
  • 界面线程
  • GPU线程或
  • 输入/输出线程。

即使您的 Dart 代码只是在 Ui 线程中运行,它也会影响其他线程。


小智 8

调试版本存在一些性能问题,因为在发布版本中会发生许多断言和其他验证。发布版本比调试版本快得多。

在发布版本中运行应用程序可能会有所帮助。尝试在发布模式下运行

flutter run --release
Run Code Online (Sandbox Code Playgroud)