我在一个非常具体的场景中遇到了“未能及时恢复”崩溃(我认为这与看门狗有关):只有当从后台恢复时,并且只有在去背景(最多几秒钟)。
这似乎是相关的崩溃日志:
Incident Identifier: E30F2238-5B15-49A1-BCBC-386791AC93FA
CrashReporter Key: 84f4fb61c9e5c597750146695fffdc55f7273fb7
Hardware Model: iPod4,1
Process: XXXXXXX
Path: /var/mobile/Applications/DE774CCE-D452-418D-A862-4562A0E5F1D0/XXXXXXX.app/XXXXXXX
Identifier: XXXXXXX
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2013-01-14 13:15:41.955 +0200
OS Version: iOS 6.0 (10A403)
Report Version: 104
Exception Type: 00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread: 0
Application Specific Information:
XXXXXXX failed to resume in time
Elapsed total CPU time (seconds): 9.140 (user 9.140, system 0.000), 91% CPU
Elapsed application CPU time (seconds): 7.806, 78% CPU
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x336fa7cc fsync + 8
1 Foundation 0x3a444974 _NSWriteBytesToFileWithExtendedAttributes + 668
2 Foundation 0x3a4446ce _NSWriteBytesToFile + 22
3 Foundation 0x3a4446ac -[NSData(NSData) writeToFile:atomically:] + 80
4 XXXXXX 0x001777ee 0xe3000 + 608238
5 CoreFoundation 0x38361034 _CFXNotificationPost + 1424
6 Foundation 0x3a437d8c -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
7 Foundation 0x3a43b84e -[NSNotificationCenter postNotificationName:object:] + 26
8 XXXXXX 0x000e6616 0xe3000 + 13846
9 UIKit 0x37e050e4 -[UIApplication _handleApplicationSuspend:eventInfo:] + 780
10 UIKit 0x37d7b1ea -[UIApplication handleEvent:withNewEvent:] + 2454
11 UIKit 0x37d7a6d0 -[UIApplication sendEvent:] + 68
12 UIKit 0x37d7a11e _UIApplicationHandleEvent + 6150
13 GraphicsServices 0x3600d5a0 _PurpleEventCallback + 588
14 GraphicsServices 0x3600d1ce PurpleEventCallback + 30
15 CoreFoundation 0x383e5170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
16 CoreFoundation 0x383e5112 __CFRunLoopDoSource1 + 134
17 CoreFoundation 0x383e3f94 __CFRunLoopRun + 1380
18 CoreFoundation 0x38356eb8 CFRunLoopRunSpecific + 352
19 CoreFoundation 0x38356d44 CFRunLoopRunInMode + 100
20 GraphicsServices 0x3600c2e6 GSEventRunModal + 70
21 UIKit 0x37dce2fc UIApplicationMain + 1116
22 XXXXXXX 0x000e5cd0 0xe3000 + 11472
23 XXXXXXX 0x000e5c6c 0xe3000 + 11372
我试过调试这个,但是当连接到调试器时它似乎没有发生(我发现的所有相关信息都表明当连接到调试器时 wacthdog 被禁用),所以我然后尝试记录尝试跟踪发生的事情的过程。
我已将日志记录添加到所有 AppDelegate 相关方法(applicationWillResignActive、applicationDidEnterBackground、applicationWillEnterForeground、applicationDidBecomeActive 甚至 applicationWillTerminate) 但从后台返回时没有日志,只有在进入后台时。我知道即使应用程序在后台运行了指定的时间,某些进程也可以通过某种方式进行调度,即使应用程序在后台运行了指定的时间,它们也可以恢复,但我不会自行执行任何此类进程。也许 Facebook SDK 会做类似的事情,但我也找不到任何相关引用,崩溃日志也没有提供任何指示。
我在这里有点不知所措,如果能向正确的方向插入甚至轻推,我将不胜感激。
最佳答案
是的,这是看门狗相关的。
是否有可能您的编写过程在主线程上花费了太多时间并阻塞了主线程?这可以解释为什么从后台返回时没有显示日志数据,并且只有在进入后台后不久恢复时才会发生这种情况。
我建议您执行以下操作:
在进入后台而不是在主线程中写入数据, 但通过以下方式使用后台任务:
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{...
最大规则:永远不要阻塞主线程,因为任何事情都可能需要超过几分之一秒的时间。将其全部移动到后台线程中,或者在这种情况下移动到后台任务中。
关于iphone - 申请未能及时恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358620/
警告:找不到RubyGems1.2+索引:RubyGems将恢复到降低性能的遗留索引。如果有人能帮我解决这个问题,我会给他们50.00美元我用尽了谷歌,重新安装了所有东西。我只想做gem安装...就是这样 最佳答案 删除罪魁祸首URL。就我而言,我使用的是Centos5.4,我收到的完整错误消息是:root#geminstallrackWARNING:RubyGems1.2+indexnotfoundfor:http://rubyworks.rubyforge.org/redhat/5/GEMS/x86_64/RubyGemswil
Ruby的callcc捕获当前的延续,随后可以调用它来恢复控制,但不能恢复数据。我想捕捉当前的延续以及内存的当前图像。在我看来,捕获堆应该不是很困难;我可以依赖ObjectSpace::each_object和ObjectSpace::dump_all,或Marshal.dump,或简单地Object.clone。但是,我没有看到任何直接的方法来恢复堆。理想情况下,我想遍历object_id->object映射,为每个object_id恢复对象的旧图像(并重新添加object_id如果相应的对象已经被GC'd)。不出所料,没有Ruby级别的API可以让我这样做。我想知道是否有任何我可以
我正在构建一个与RubyonRails后端对话的iPhone应用程序。RubyonRails应用程序还将为Web用户提供服务。restful_authentication插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望iPhone应用程序的用户在新列中存储一个由手机的唯一标识符([[UIDevicedevice]uniqueIdentifier])自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用iPhone应用程序,因为该应用程序可以使用它的标识符
我正在使用MacHighSierra。我在RVM中使用Ruby2.2.1。我需要将mysql2与这个RubyonRails应用程序一起使用。我确实安装了mysql5.7。我确实安装了xcode和命令行工具。我只是想让这个公司的应用程序在我的本地机器上运行。我知道我已经非常接近了,但是当我执行bundleinstall时出现最后一个错误,当我到达mysql2gem时收到以下错误:Fetchingmysql20.3.18Installingmysql20.3.18withnativeextensionsGem::Ext::BuildError:ERROR:Failedtobuildgemn
我有一个使用deviseonrails3的应用程序。我想启用http身份验证,以便我可以从iPhone应用程序向我的网络应用程序进行身份验证。如何从我的iPhone应用程序进行身份验证以进行设计?这安全吗?还是我应该进行不同的身份验证? 最佳答案 从设计的角度来看,您有3个选择:1)使用基本的http身份验证:您的iPhone应用程序有一个secretkey-这是在您的iPhone应用程序代码中烘焙的-用于对网络应用程序的每个请求进行身份验证。Google搜索:“设计基本的http身份验证”2)您可以通过在您的iPhone应用程序中
我的应用程序设置为如果用户使用Oauth或Openid登录,他们不必确认他们的电子邮件地址。但是,Devise仍在发送电子邮件确认。当我调用User.skip_confirmation时!我得到一个未定义的方法错误。我的模型:classUserfalsedefself.find_for_facebook_oauth(access_token,signed_in_resource=nil)data=access_token.extra.raw_infoifuser=User.where(:email=>data.email).firstuserelse#User.skip_confirm
我错误地在我的项目上运行了sudobundleinstall,现在当我以自己的身份运行它时bundleinstall我得到了权限被拒绝的错误(如下)。我在这里尝试了说明https://github.com/bundler/bundler/blob/master/ISSUES.md#other-problems,还尝试将我的项目克隆到一个新目录并从那里运行bundle,但没有用。请帮忙!error:cannotopen.git/FETCH_HEAD:PermissiondeniedRetryinggitfetch--force--quiet--tags"/home/akonsu/.bun
有没有办法撤消/恢复对Activerecord对象的任何本地更改。例如:user=User.firstuser.name#"Fred"user.name="Sam"user.name_was#"Fred"user.revertuser.name#"Fred"我知道我可以执行user.reload但我不必访问数据库来执行此操作,因为旧值存储在对象的状态中。最好是Rails3解决方案。 最佳答案 如thisanswer中所述Rails4.2在ActiveModel::Dirty中引入了restore_attributes方法:user=
这个问题在这里已经有了答案:关闭13年前。PossibleDuplicates:HowcanIdevelopforiPhoneusingaWindowsdevelopmentmachine?我想为我妻子的手机构建一个iPhone应用程序,但我对购买Mac作为一次性工作的开发平台不感兴趣。应用程序:应该在iPhone上独立运行(即没有网络连接)完全可以接受使用iPhoneJavascript库之一创建的GUI会做一些数据库IO来读取和更新数据没有商业值(value),永远不会被任何人使用这是我的想法:越狱iPhone在iPhone上安装Ruby+Sinatra使用Sinatra编写应用程
我正在试验iPhoneSDK并在Nic博士的rbiPhoneTest项目中做一些TDD。我想知道有多少人(如果有的话)成功地使用了这个或任何其他iPhone/Cocoa测试框架?更重要的是,我想知道如何最好地断言专有的二进制请求/响应协议(protocol)。这个想法是通过网络发送二进制请求并接收二进制响应。请求和响应是使用byteand'ing和or'ing创建的。我正在使用黄金副本模式来测试我的请求。这是我到目前为止所拥有的。不要笑,因为我是ObjectiveC和Ruby的新手:requireFile.dirname(__FILE__)+'/test_helper'require'