我应该如何从根本上提高颤振应用性能



好吧,这对你来说可能是一篇很长的文章,但对像我这样的新手来说可能会解决很多问题。好了,现在开门见山,在从firestore加载一堆列表数据并防止应用程序崩溃的同时,我到底应该如何提高性能。这是我的遭遇,我正在开发一个送餐应用程序,到目前为止,这个应用程序中大约有50家餐厅,事实是,许多低成本手机(特别是vivo(没有加载,应用程序崩溃了,所以我限制了一次加载的文档数量,但这实际上影响了用户体验,这里有竞争对手比我们快得多,我不知道他们使用了什么技术,但他们在没有任何加载时间的情况下立即加载了98家餐厅,我也试图在后台加载数据,但应用程序崩溃了,所以现在我只能限制文档的数量,但我该如何改进?目前,主页由10张网络图像卡、3张渐变色资产图像堆叠卡和5家餐厅的列表组成,随着使用量的向下滚动,这些列表会增加,但加载数据不够快。有人建议我加快速度的方法吗?还是我必须更改数据库?

所以,我认为你的应用程序很慢,因为当应用程序中发生变化时,它会一次又一次地渲染所有的小部件,从而降低应用程序的速度。一些基本的解决方案是:

1-对从不更改的变量使用const。(例如:const Color colorPrimary = Color(0xffaabbcc));

2-使用Provider包加载和存储您的数据,这样您就可以在任何地方使用您的数据。此外,它还阻止所有小部件进行渲染。它只呈现使用该数据的小部件。(例如,如果每次都不更改AppBar标题,则不希望渲染AppBar(

3-将大的小部件划分为单独的小部件。它使您的项目管理变得简单。

4-也许你的图片很大,而你的应用程序无法快速加载,然后它就会崩溃。缩小它们的尺寸。(例如:256x256,而不是512x512(

5-加载数据时使用延迟加载。也许你的应用程序试图一次加载所有数据,这会让你的应用速度变慢。使用延迟加载,大多数数据直到用户向下滚动时才会加载。(我想你已经在用了,但我只是想提一下(

这些都是可能的解决方案。

如果您担心应用程序在发布模式下的性能,您可以收缩应用程序。它使用不同的技术,通过从应用程序中删除未使用的代码来提高应用程序的效率,这被称为收缩,以及许多其他技术,如模糊,缩短类名和方法,您可以查看此链接以了解更多信息https://developer.android.com/studio/build/shrink-code.

不确定您是否还需要答案,但我相信您的问题与一次加载所有视图有关。

如果您的应用程序仅在加载过多结果时才在启动时崩溃,那么很可能您没有使用ListView.builder异步加载所有视图。

我给你的建议如下:

  1. 使用ListView.builder延迟加载您的UI。这将只为屏幕上可见的视图分配内存
  2. 仔细检查是否只加载了一次数据您还没有分享任何代码,但我曾经遇到过这个问题,每次重新构建小部件的状态时都会调用我的Future
  3. 尽可能多地使用stateless小部件。将小部件拆分为可重用组件,并尽可能多地制作const无状态小部件

如果你想要一个详细的例子,你可以查看本文中的提示4。

我确实在2020年找到了一个解决方案,崩溃和速度慢的原因是图像,大图像。

最新更新