【问题标题】:react native crash in ios while running in background在后台运行时对 ios 中的本机崩溃做出反应
【发布时间】:2017-05-30 14:38:41
【问题描述】:

我的应用与健身追踪器非常相似,我在 iphone 5s 和 5c 上重现了以下错误: 当我开始跟踪运行时,在某些情况下,应用程序在后台运行时被杀死。

条件似乎是:

  • 点击应用中的开始追踪按钮,不超过 2 秒后锁定屏幕
  • 让应用程序在后台运行至少 30 分钟。

我设法在设备上获取了崩溃日志,并将报告符号化,但它没有给我更多提示。它只是提到了接收错误的通用反应原生 js 和 ios 类。

我正在使用 bugsnag 来收集崩溃报告,但在这种情况下它不会提交任何报告(可能是因为应用程序被杀死并且没有时间提交报告)。

  • 有人知道发生了什么吗?
  • 您知道如何进一步推进调查吗?
  • 我从崩溃日志中遗漏了什么重要的东西?

谢谢!

崩溃日志中有趣的部分:

Exception Type:  EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: Namespace <0xF>, Code 0x8badf00d
Triggered by Thread:  0

xcrun atos -arch arm64 -o appDsyms/4C682DF9-82D7-342C-ABC3-6218A1EED4F6.dSYM/Contents/Resources/DWARF/MyApp -l 0x100074000 0x000000010007b2bc 0x00000001001452f4 0x0000000100145318 0x00000001000aba84

main (in MyApp) (main.m:16)
ksmachexc_i_handleExceptions (in MyApp) (KSCrashSentry_MachException.c:237)
ksmachexc_i_handleExceptions (in MyApp) (KSCrashSentry_MachException.c:233)
+[RCTJSCExecutor runRunLoopThread] (in MyApp) (RCTJSCExecutor.mm:211)

complete crash log

【问题讨论】:

  • 这方面有什么更新吗?我也遇到了一些后台崩溃。
  • 刚刚回答了@oriharel,希望它能激发您的调查灵感!祝你好运!

标签: ios react-native crash react-native-ios bugsnag


【解决方案1】:

我花了很长时间才明白发生了什么。永远无法从崩溃日志或 bugsnag 中获得任何信息。

必须使用 XCode 长时间分析它以了解发生了什么:我有内存泄漏。而且,如果您的应用占用过多内存并在后台运行,则 iOS 有时会将其视为有害应用并直接将其杀死。

问题

简而言之,问题在于 gps 坐标的检索和 UI 上更新的显示(我在其中计算花费的距离、平均速度和其他分析)是有界的。

所以 redux 操作在后台触发,而 UI 上没有更新。最重要的是,我将 gps 坐标存储在 redux 存储中,一段时间后,存储在一个巨大的数组中。这导致了很多不必要的处理 + 愚蠢的内存使用。

修复

我通过分离这些来修复它

  • gps坐标的检索和存储(只是将坐标存储在AsyncStorage中,没有计算动作)

  • UI 的更新:每秒更新一次计时器,计算所用时间 + 每 2 秒检查一次是否有新的 gps 坐标,如果有则计算分析

结果

当应用程序处于活动状态时,CPU 和内存使用量显着减少,这仅仅是因为我停止使用 redux 来存储大量数据(它不是用来存储你的 UI 状态的)。

当应用程序在后台运行时,CPU 和内存使用变得完全平坦,因为我只是在存储东西。

所以我在这个主题上的新知识!.. 聪明,分开关注.. 长期分析。如果您有任何内存泄漏,请考虑存储数据的位置和频率。如果您的应用在后台运行,请尽可能限制此阶段发生的事情(避免 redux 更新、避免计算、存储以供以后处理)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多