压力测试期间亮度问题

17

我的应用程序可以擦除所有联系人和日历事件。在我们没有进行压力测试之前一直运行良好。

在此期间,当我们执行以下用例时,观察到设备亮度下降:

  1. 将Facebook、Gmail等帐户与设备同步,以便联系人和日历中有很多记录。在我们的情况下,约有477个联系人和1500多个日历事件。
  2. 输入擦除命令
  3. 在擦除过程中关闭设备,然后再次打开。
  4. 根据应用程序设计,如果有任何未完成的命令,它会查询服务器并重新开始擦除。
  5. 现在,如果我在应用程序选项卡之间切换,设备的亮度突然降低。如果我进入设置并检查亮度级别,它没有改变。我们没有在应用程序中做任何能改变设备亮度的事情。

这对我们来说很奇怪,也不容易理解。如果有人有任何线索,请回复。

起初,我认为iOS可能会因为自动亮度开启而更改它。因此,如果应用程序执行更多处理任务,它可能会为了节省电力而这样做。但是即使自动亮度关闭,问题仍然存在。

其次,问题是,如果我关闭并打开设备,则会发生这种情况。因此,一旦关闭,我就会失去调试会话。所以很难找到原因。

注意:关闭意味着完全关闭设备。长按电源按钮,滑动关闭设备。同时,如果我们在擦除联系人时执行这些步骤,就不会出现崩溃。只有在我们擦除日历事件时才会出现。

添加更多细节。出现崩溃后,我也会遇到上述问题。以下是崩溃报告的详细信息

`Incident Identifier: 297BD243-B9D9-414F-A9FB-3C02CAAF8A89
CrashReporter Key:   e2ff53439e90b377dadf9c750793f23cac739930
Hardware Model:      iPhone4,1
Process:         SpringBoard [293]
Path:            /System/Library/CoreServices/SpringBoard.app/SpringBoard
Identifier:      SpringBoard
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2013-03-21 16:30:25.137 +0530
OS Version:      iOS 6.1 (10B142)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread:  21

blah ... blah ... blah ... all thread info

Thread 21 name:  Dispatch queue: com.apple.eventkit.eventstore.registered
Thread 21 Crashed:
0   libsystem_kernel.dylib          0x396e8350 __pthread_kill + 8
1   libsystem_c.dylib               0x3965f11e pthread_kill + 54
2   libsystem_c.dylib               0x3969b96e abort + 90
3   libc++abi.dylib                 0x38c39d4a abort_message + 70
4   libc++abi.dylib                 0x38c36ff4 default_terminate() + 20
5   libobjc.A.dylib                 0x391eaa74 _objc_terminate() + 144
6   libc++abi.dylib                 0x38c37078 safe_handler_caller(void (*)()) + 76
7   libc++abi.dylib                 0x38c37110 std::terminate() + 16
8   libc++abi.dylib                 0x38c3850e __cxa_throw + 118
9   libobjc.A.dylib                 0x391ea9ba objc_exception_throw + 90
10  CoreFoundation                  0x314cd158 +[NSException raise:format:arguments:] + 96
11  Foundation                      0x31da2ab2 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 86
12  EventKit                        0x31bb1882 -[EKObjectID entityName] + 382
13  EventKit                        0x31bb1604 -[EKEventStore _addFetchedObjectWithID:] + 52
14  EventKit                        0x31bfb95e __68-[EKEventStore registerFetchedObjectWithID:defaultLoadedProperties:]_block_invoke_0 + 78
15  libdispatch.dylib               0x396014b4 _dispatch_client_callout + 20
16  libdispatch.dylib               0x396059f2 _dispatch_barrier_sync_f_invoke + 26
17  EventKit                        0x31bb150c -[EKEventStore registerFetchedObjectWithID:defaultLoadedProperties:] + 156
18  EventKit                        0x31c039ce __41-[EKPredicateSearch startWithCompletion:]_block_invoke_0 + 514
19  EventKit                        0x31bb8830 -[EKDaemonConnection _processReplyWithID:data:finished:] + 264
20  EventKit                        0x31bb871e CADReceiveReply + 94
21  EventKit                        0x31bb86a2 _XReply + 118
22  EventKit                        0x31bb8626 ClientCallbacks_server + 90
23  libdispatch.dylib               0x39609a02 dispatch_mig_server$VARIANT$mp + 114
24  EventKit                        0x31c00c84 __43-[EKDaemonConnection initWithOptions:path:]_block_invoke_016 + 36
25  libdispatch.dylib               0x39608134 _dispatch_source_invoke$VARIANT$mp + 248
26  libdispatch.dylib               0x3960691a _dispatch_root_queue_drain + 182
27  libdispatch.dylib               0x39606abc _dispatch_worker_thread2 + 80
28  libsystem_c.dylib               0x39636a0e _pthread_wqthread + 358
29  libsystem_c.dylib               0x396368a0 start_wqthread + 4


Thread 21 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x3b1af534
    r4: 0x00000006    r5: 0x07494000      r6: 0x1f96a044      r7: 0x074932b4
    r8: 0x1f96a020    r9: 0x00000300     r10: 0x1f9594a0     r11: 0x1fa97b00
    ip: 0x00000148    sp: 0x074932a8      lr: 0x3965f123      pc: 0x396e8350
  cpsr: 0x00000010`
请问您是否了解这个问题?如果了解,能否分享一些信息呢?

出于好奇,这是针对越狱的iPhone,对吗? - viral
不是越狱的 iPhone。 - Sagrian
你能通过[[UIScreen mainScreen] setBrightness:1.0]来恢复亮度吗? - Nuoji
1
此外,如果您想测试这是否是由于CPU负载引起的问题,那么您应该能够添加一个使用所有CPU的函数,并查看它是否也会影响亮度。但从崩溃报告来看,这似乎是在守护线程上运行时EventKit内部发生了崩溃。也许旧的擦除仍在运行,而您又开始了新的擦除? - Nuoji
2个回答

1
我不认为这与你的应用程序崩溃有任何关系,而是iOS内置的预期功能,当设备过热时会出现这种情况。
我也遇到过其他应用程序发生这种情况,通常发生在以下情况下:
1. 应用程序使用接近100%的CPU(产生热量) 2. 热量无法散发(使用保护套或手机放在布料上) 3. 设备还在充电(产生额外的热量)
听起来你的设备已连接记录日志。尝试在不连接到Mac的情况下进行压力测试,看看是否有所不同。

0

确保在关闭设备时,您不改变进入环境光传感器的光量。我之前注意到过类似的行为,归因于操作系统上实现光线感应的不良。


嗯...我不知道你在说什么。我们的代码中没有涉及任何传感器。你能否详细说明一下你的建议? - Sagrian
啊,抱歉,我应该明确一下。我指的是由iOS处理、默认开启的环境光传感器。如果在解锁设备时,您的手覆盖了环境光传感器,操作系统(在您的应用程序下)可能会降低屏幕亮度。我只是在排除可能的解决方案,为什么一个没有编辑屏幕亮度的应用程序会出现您看到的亮度级别变化。 - woody121
不是这个问题...已经验证过了。而且还涉及到崩溃,所以我认为有其他问题。我的怀疑在于,如果我们在removeEvent:span:error函数期间关闭设备,事件状态可能会不一致。如果您有任何理论,请分享... - Sagrian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接