【问题标题】:"failed to resume in time" on resumption from background crash从后台崩溃恢复时“未能及时恢复”
【发布时间】:2011-05-23 19:16:30
【问题描述】:

好的,所以转到后台我隐藏了所有内容。当我切换回来时,我仍然收到未能及时恢复的错误。如果一切都被隐藏了,为什么它会在 drawRect 中崩溃?关于如何处理这样的“无法恢复”错误的任何想法?

Incident Identifier: 0E5ADFDF-1EB1-4ECC-9F02-57B37F1BBBA1
CrashReporter Key:   17186e938075dd5907223199eccdc85176f18698
Hardware Model:      iPad1,1
Process:         hexProto [2162]
Path:            /var/mobile/Applications/31D43A9F-0EF3-4D03-89AC-243B68F75D91/hexProto.app/hexProto
Identifier:      hexProto
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2010-12-10 15:56:11.615 -0800
OS Version:      iPhone OS 4.2 (8C134)
Report Version:  104

Exception Type:  00000020
Exception Codes: 0x8badf00d
Highlighted Thread:  0

Application Specific Information:
Annexation failed to resume in time

Elapsed total CPU time (seconds): 9.880 (user 7.320, system 2.560), 97% CPU
Elapsed application CPU time (seconds): 7.650, 75% CPU

Thread 0:
0   ImageIO                       0x00009740 ImageIO_ABGR_TO_ARGB_8Bit + 44
1   ImageIO                       0x00006ade ImageProviderCopyImageBlockSetCallback + 210
2   CoreGraphics                  0x00009052 CGImageProviderCopyImageBlockSetWithOptions + 226
3   CoreGraphics                  0x00008f5c CGImageProviderCopyImageBlockSet + 32
4   CoreGraphics                  0x00008c8a img_blocks_create + 182
5   CoreGraphics                  0x00025e1a img_blocks_extent + 42
6   CoreGraphics                  0x00025d06 img_interpolate_extent + 70
7   CoreGraphics                  0x00004e90 img_data_lock + 4376
8   CoreGraphics                  0x00003668 CGSImageDataLock + 104
9   libRIP.A.dylib                0x0000c658 ripc_AcquireImage + 2676
10  libRIP.A.dylib                0x00009c6e ripc_DrawImage + 462
11  CoreGraphics                  0x00003520 CGContextDelegateDrawImage + 44
12  CoreGraphics                  0x000033de CGContextDrawImage + 250
13  UIKit                         0x000148aa -[UIImage drawInRect:blendMode:alpha:] + 1182
14  UIKit                         0x0003affe -[UIImage drawInRect:] + 50
15  hexProto                      0x00047782 -[NormalButton drawRect:] (NormalButton.m:48)
16  UIKit                         0x000132d2 -[UIView(CALayerDelegate) drawLayer:inContext:] + 258
17  QuartzCore                    0x000152fe -[CALayer drawInContext:] + 86
18  QuartzCore                    0x0001507c backing_callback(CGContext*, void*) + 32
19  QuartzCore                    0x00014af2 CABackingStoreUpdate + 1226
20  QuartzCore                    0x0001435c -[CALayer _display] + 724
21  QuartzCore                    0x0001406a -[CALayer display] + 134
22  QuartzCore                    0x00013fb0 CALayerDisplayIfNeeded + 176
23  QuartzCore                    0x0000956e CA::Context::commit_transaction(CA::Transaction*) + 214
24  QuartzCore                    0x0000937c CA::Transaction::commit() + 184
25  QuartzCore                    0x000092bc CA::Transaction::pop() + 120
26  QuartzCore                    0x0000923a +[CATransaction commit] + 18

【问题讨论】:

  • 你实现了applicationWillEnterForeground等方法吗?
  • 好吧,我只是在辞职后将所有内容隐藏起来......我从未将它们重新设置为可见。仍在尝试绘制。
  • 我相信即使视图被隐藏,drawRect 有时也会被调用。知道是什么导致它在该方法中崩溃吗?
  • 我认为它试图从头开始重绘所有内容.. 我的应用程序有点复杂,所以需要一段时间才能做到这一点。 iPhone os 重启的时间显然太长了。
  • 如果是这种情况,我建议您尝试覆盖 drawRect 方法,以便您可以控制何时调用它。

标签: iphone ios multitasking


【解决方案1】:

使用 Instruments(特别是 Shark)找出发生了什么。

Springboard 杀死您的应用的原因是因为您即将超过允许的 10 秒(Apple 似乎从未公布确切的数字是多少,但普遍的看法似乎将其固定在 10 秒)。

Elapsed total CPU time (seconds): 9.880 (user 7.320, system 2.560), 97% CPU 

当程序崩溃时,它可能正在做一些绘图——你怎么知道它在 8 秒内没有做一些其他任务,然后在 1.5 内做绘图?这就是我使用 Shark 找出占用 CPU 时间最多的地方。

然后,分析一下,看看能做些什么。

【讨论】:

  • 告诉我进展如何。如果它不能解决您的问题,请告诉我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多