我不知道如何重现这次崩溃,但事情正在发生。堆栈显示应用程序将在#16下面显示背景。
我找不到有关此次崩溃的任何帮助。
当应用程序进入后台时,为什么它会尝试处理键盘任务?第1-5行表明它试图做一些键盘任务。
这里可能会发生什么?
Intent intent= new Intent();
intent.putExtra("yourKey",newpassword.getText().toString());
setResult(Activity.RESULT_OK, intent);
finish();
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String password = data.getStringExtra("yourKey")
}
主题1:
# 1 _dispatch_barrier_sync_f_slow + 518 (libdispatch.dylib + 0x00010c68) 0x0
# 2 __88-[UIKeyboardLayout recognizer:releaseTouchToLayoutWithId:startPoint:endPoint:whenReady:]_block_invoke + 95 (UIKit + 0x004297fd) 0x0
# 3 __88-[UIKeyboardLayout recognizer:releaseTouchToLayoutWithId:startPoint:endPoint:whenReady:]_block_invoke + 93 (UIKit + 0x004297fb) 0x74cd0c8
# 4 -[UIKeyboardTaskQueue continueExecutionOnMainThread] + 393 (UIKit + 0x0003737d) 0x74cd0f8
# 5 __39-[UIKeyboardLayout resetHRRLayoutState]_block_invoke + 625 (UIKit + 0x0042a809) 0x74cd118
# 6 _dispatch_client_callout + 21 (libdispatch.dylib + 0x00001781) 0x74cd2b0
# 7 _dispatch_barrier_sync_f_invoke + 49 (libdispatch.dylib + 0x0000da33) 0x74cd2c0
# 8 -[UIKeyboardLayout resetHRRLayoutState] + 107 (UIKit + 0x0042a56b) 0x74cd2dc
# 9 +[UIKeyboardImpl applicationWillResignActive:] + 223 (UIKit + 0x0012fe35) 0x74cd304
# 10 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 9 (CoreFoundation + 0x000a6db7) 0x74cd318
# 11 _CFXRegistrationPost + 381 (CoreFoundation + 0x000a66f7) 0x74cd320
# 12 ___CFXNotificationPost_block_invoke + 39 (CoreFoundation + 0x000a64df) 0x74cd35c
# 13 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1241 (CoreFoundation + 0x00101307) 0x74cd378
# 14 _CFXNotificationPost + 539 (CoreFoundation + 0x0000a033) 0x74cd6f0
# 15 -[NSNotificationCenter postNotificationName:object:userInfo:] + 65 (Foundation + 0x000060ab) 0x74cd8bc
# 16 -[UIApplication _deactivateForReason:notify:] + 815 (UIKit + 0x00073e0f) 0x74cd8d0
# 17 __61-[UIApplication _sceneSettingsPreLifecycleEventDiffInspector]_block_invoke + 93 (UIKit + 0x00282255) 0x74cd908
# 18 __52-[FBSSettingsDiffInspector inspectDiff:withContext:]_block_invoke.27 + 165 (FrontBoardServices + 0x00020cfd) 0x74cd928
# 19 __NSIndexSetEnumerate + 437 (Foundation + 0x000af3df) 0x74cd9b8
# 20 -[NSIndexSet enumerateIndexesWithOptions:usingBlock:] + 65 (Foundation + 0x00030bcd) 0x74cda48
# 21 -[BSSettingsDiff inspectChangesWithBlock:] + 101 (BaseBoard + 0x00035a57) 0x74cda6c
# 22 -[FBSSettingsDiff inspectOtherChangesWithBlock:] + 89 (FrontBoardServices + 0x0001b025) 0x74cda98
# 23 -[FBSSettingsDiffInspector inspectDiff:withContext:] + 299 (FrontBoardServices + 0x00020b5b) 0x74cdab8
# 24 __70-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 101 (UIKit + 0x00283427) 0x74cdb20
# 25 -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 823 (UIKit + 0x00283131) 0x74cdb50
# 26 -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 411 (UIKit + 0x00588aa1) 0x74cdc18
# 27 __80-[FBSSceneImpl updater:didUpdateSettings:withDiff:transitionContext:completion:]_block_invoke + 209 (FrontBoardServices + 0x0000af65) 0x74cdc7c
# 28 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 17 (FrontBoardServices + 0x00035c11) 0x74cdca8
# 29 -[FBSSerialQueue _performNext] + 219 (FrontBoardServices + 0x00035acb) 0x74cdcb8
# 30 -[FBSSerialQueue _performNextFromRunLoopSource] + 43 (FrontBoardServices + 0x00035db5) 0x74cdd94
# 31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 11 (CoreFoundation + 0x000b6fdb) 0x74cdda4
# 32 __CFRunLoopDoSources0 + 423 (CoreFoundation + 0x000b6b03) 0x74cddac
# 33 __CFRunLoopRun + 1159 (CoreFoundation + 0x000b4f4f) 0x74cdde8
# 34 CFRunLoopRunSpecific + 469 (CoreFoundation + 0x000080ed) 0x74cea88
# 35 CFRunLoopRunInMode + 103 (CoreFoundation + 0x00007f0f) 0x74ceb70
# 36 GSEventRunModal + 79 (GraphicsServices + 0x00009b3f) 0x74ceb98
# 37 UIApplicationMain + 149 (UIKit + 0x00071e81) 0x74cebb8
# 38 UIApplicationMain (ApplicationHooks.m:50) (MyApp + 0x0002235f) 0x74cebdc
# 39 main (main.mm:18) (MyApp + 0x003a227f) 0x74cebfc
# 40 0x1b33a4e9 in start + 1 (libdyld.dylib + 0x000034e9) 0x74cec18
答案 0 :(得分:1)
不了解您的应用程序:如果它使用OpenGL,严格使用UIKit等。如果不知道您正在查看的异常类型或导致该问题的用例,请考虑以下事项
如果某个应用程序崩溃进入后台,尤其是当您在Xcode中调试时没有看到这些崩溃(这些是用户崩溃?)时,需要注意的是应用程序正在发生的事情进入后台,意思是applicationWillResignActive和applicationDidEnterBackground,还有任何计划任务(计时器,可以在飞行中的异步代码,预定更新循环等。确保你关闭任何不允许的事情在后台(例如OpenGL绘图),并停止/暂停任何长时间运行的任务或使用beginBackgroundTaskWithName / endBackgroundTask在后台任务中执行它们。最后,确保您的代码不需要花费很长时间从applicationDidEnterBackground返回或者系统会杀死你的应用。
要实现的其他一些事情是,通过按主页按钮不会发生背景/辞职。下拉通知中心,进入Touch ID警报验证对话框,接听电话等,您的应用程序将被暂停。也许这可以帮助您确定造成它的情景。
键盘删除很有趣,我认为它表示视图在视图变为非活动状态时会收到endEditing消息或类似内容。你有键盘解散时执行的代码吗?如果是这样的话,请再次确保没有做任何在后台工作时不应该做的事情。
它的UI崩溃这一事实让我想到了与后台没有直接关系的东西,以及在主线程之外的线程上进行UI调用,这不是&# 39;安全。 Xcode 9有一个检查器,所以你可以启用它,看看它是否找到任何东西。这些往往是棘手的事情要追查,而Xc9对此有很大的帮助。
你应该在Xcode(来自Apple)看到的崩溃日志,如果这是一个已发布的应用程序,或者在崩溃的人的设备上,将比上面的两个线程有更多的信息。只有这两个线程对于跟踪这个问题并不是非常有用。如果你能掌握一个完整的符号化iOS崩溃日志,这可能会更容易理解。
如果您可以发生崩溃,但不能在Xcode中进行调试,您也可以在Xcode之外运行应用程序,但是拉出Window>设备和模拟器窗口并观看设备的系统控制台。崩溃发生。也许会有一个暗示,比如Springboard杀死你的应用程序。您也可以在事后(不是实时)以相同的方式查看日志。您需要隔离崩溃的时间以了解系统日志中的位置,但手机上的应用程序崩溃日志应该会有所帮助。