首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们的ReactNative应用程序在使用安卓手机时会放慢速度?

为什么我们的ReactNative应用程序在使用安卓手机时会放慢速度?
EN

Stack Overflow用户
提问于 2021-07-31 21:37:31
回答 1查看 1.6K关注 0票数 3

性能问题

我们的ReactNative应用程序unblnd.com/app存在性能问题。这款应用在大多数Android手机上使用几分钟后(安装后)就开始变慢了。

做了些什么?

A) Api请求

有些api请求有点慢,但是查询已经得到改进。查询不会影响iPhone上的应用程序性能。可以得出的结论是,api请求并没有使应用程序滞后。

我们将暂时提升AWS中的服务器,以确保这不会导致问题。

B)导航

我们发现了一些消息来源,说明了反应-导航v5将是缓慢的。因此,我们查看了导航堆栈,但是使用react导航v4和v5获得了类似的缓慢性能:

代码语言:javascript
复制
@react-navigation/native: ^5.9.4
@react-navigation/stack: ^5.14.5
---
react-navigation: ^4.4.4
react-navigation-stack": ^2.10.4

C)缓存/内存

当使用应用程序时,缓存大小从0MB增加到12 0MB。从3MB的缓存大小来看,这个应用程序可能已经慢下来了。由于其他应用程序可以占用1GB以上的缓存数据大小,这似乎值得怀疑。

D( React )

我们有一个广泛的聊天系统。与聊天相关的所有屏幕都封装在一个react上下文中。我们一直在将存储的数据清理到上下文中,但是对于没有在上下文中缓存那么多聊天数据的用户来说,应用程序可能会比较慢。因此,太多的重复呈现会引起问题吗?

代码语言:javascript
复制
<ChatContext.Provider value={{...}}>
    <Stack.Navigator>
        <Stack.Screen ...>
        x 20
    </Stack.Navigator>
</ChatContext.Provider>

在反应环境中有20个屏幕。在上下文方面有什么好的做法吗?

去做:

  • 我们将制作一个没有上下文的应用程序版本;
  • 我们如何监控这些(潜在)呈现?

E)监测

我们开始使用哨兵监测。没有提出任何具体问题。在性能范围内,只显示http请求。有时它只是声明导航,有时则是缺少集成。

使用FlatList我们得到

VirtualizedLists不应该嵌套在具有相同方向的普通ScrollViews中,因为它可以破坏窗口和其他功能--使用另一个虚拟化with支持的容器。

我们可以尝试解决这个问题,但这不会导致整个应用程序的导航受阻吗?

F)内存泄漏

最明显的症状。但是很难找出是什么导致了这样的内存泄漏。

在Sentry里面我们找到了一条关于内存泄漏的线索。我们刚刚禁用了这个组件,但是Android手机仍然很慢。

指导

我们一直在尝试和修复许多不同的部分。有谁有建议、想法、建议来找出我们是什么导致Android手机慢下来的?

一般信息

npmPackages: react: 17.0.1 react原生: 0.64.2

EN

回答 1

Stack Overflow用户

发布于 2021-08-23 19:57:40

你应该分析一下你的应用程序,看看是什么东西减慢了速度。你说过只有几分钟后才会开始变慢,我想我会看看这是否发生在一些可重复的事件之后。是否只有当你打开这个屏幕,或者每次打开时才会发生。我同意你的观点,这闻起来像是内存泄漏。

如果已经使用Sentry,还可以使用Sentry.Profiler对组件进行配置,以查看每个生命周期方法所需的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68605988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档