我正在尝试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的异步编程?
调试模式
因为带有热重载的调试模式。
当您创建发行版APK https://flutter.io/docs/deployment/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 性能分析指南。您可以尝试不同的配置来诊断您的问题是否在
即使您的 Dart 代码只是在 Ui 线程中运行,它也会影响其他线程。
小智 8
调试版本存在一些性能问题,因为在发布版本中会发生许多断言和其他验证。发布版本比调试版本快得多。
在发布版本中运行应用程序可能会有所帮助。尝试在发布模式下运行
flutter run --release
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9714 次 |
| 最近记录: |