2011-11-18 25 views
6

Tôi nhận được nhật ký sự cố sau đây cho thấy ứng dụng của tôi có "xác nhận hoạt động vượt quá thời gian cho phép". Ứng dụng của tôi là ứng dụng phát trực tuyến âm thanh. Sự cố chỉ xảy ra khi ứng dụng ở chế độ nền và KHÔNG phát trực tuyến bất kỳ nội dung âm thanh nào.Không thể tìm thấy lỗi gây ra "xác nhận hoạt động vượt quá thời gian cho phép" tai nạn

GHI CHÚ:

  • tôi đảm bảo rằng beginBackgroundTaskWithExpirationHandler trong applicationDidEnterBackground có endBackgroundTask tương ứng trong applicationWillEnterForeground.
  • Tất cả các truy cập mạng đều nằm trên chỉ riêng của chúng chứ không phải trên luồng chính.
  • Khi ứng dụng ở chế độ nền, không có chủ đề nào cố gắng truy cập mạng.
  • Lỗi này là ngẫu nhiên và không thể được sao chép bằng cách chuyển thiết bị sang chế độ trên máy bay hoặc tắt WiFi.

Bất kỳ đề xuất nào về cách theo dõi sự cố này?

Đây là nhật ký sự cố (không có hình ảnh nhị phân):

Incident Identifier: 0467A340-1FD2-4D49-9FA4-76360889976D 
CrashReporter Key: fdae46f133d13bdc3f043301bc008bd56155588d 
Hardware Model:  iPhone3,1 
Process:   MyApp [249] 
Path:   /var/mobile/Applications/DAA6B446-07D3-4C7C-BD44-80920338CAF4/MyApp/MyApp 
Identifier:  MyApp 
Version:   ??? (???) 
Code Type:  ARM (Native) 
Parent Process: launchd [1] 

Date/Time:  2011-11-17 15:25:59.960 -0500 
OS Version:  iPhone OS 5.0.1 (9A405) 
Report Version: 104 

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

Application Specific Information: 
MyApp[249] has active assertions beyond permitted time: 
{(
    <SBProcessAssertion: 0xfed8890> identifier: UIKitBackgroundCompletionTask process: MyApp[249] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:249 preventSuspend preventIdleSleep 
)} 

Elapsed total CPU time (seconds): 10.700 (user 10.700, system 0.000), 2% CPU 
Elapsed application CPU time (seconds): 0.024, 0% CPU 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0: 
0 libsystem_kernel.dylib   0x3630f010 0x3630e000 + 4112 
1 libsystem_kernel.dylib   0x3630f206 0x3630e000 + 4614 
2 CoreFoundation     0x343d841c 0x3434b000 + 578588 
3 CoreFoundation     0x343d711a 0x3434b000 + 573722 
4 CoreFoundation     0x3435a4d6 0x3434b000 + 62678 
5 CoreFoundation     0x3435a39e 0x3434b000 + 62366 
6 GraphicsServices    0x30bdefc6 0x30bdb000 + 16326 
7 UIKit       0x377db73c 0x377aa000 + 202556 
8 MyApp      0x000024de main (main.m:14) 
9 MyApp      0x0000249c start + 32 

Thread 1 name: Dispatch queue: com.apple.libdispatch-manager 
Thread 1: 
0 libsystem_kernel.dylib   0x3630f3b4 0x3630e000 + 5044 
1 libdispatch.dylib    0x37039e78 0x3702d000 + 52856 
2 libdispatch.dylib    0x37039b96 0x3702d000 + 52118 

Thread 2 name: WebThread 
Thread 2: 
0 libsystem_kernel.dylib   0x3630f010 0x3630e000 + 4112 
1 libsystem_kernel.dylib   0x3630f206 0x3630e000 + 4614 
2 CoreFoundation     0x343d841c 0x3434b000 + 578588 
3 CoreFoundation     0x343d7154 0x3434b000 + 573780 
4 CoreFoundation     0x3435a4d6 0x3434b000 + 62678 
5 CoreFoundation     0x3435a39e 0x3434b000 + 62366 
6 WebCore       0x3682e128 0x36786000 + 688424 
7 libsystem_c.dylib    0x331aac16 0x3319b000 + 64534 
8 libsystem_c.dylib    0x331aaad0 0x3319b000 + 64208 

Thread 3 name: com.apple.coremedia.player.async 
Thread 3: 
0 libsystem_kernel.dylib   0x3631f068 0x3630e000 + 69736 
1 libsystem_c.dylib    0x331aaf2e 0x3319b000 + 65326 
2 libsystem_c.dylib    0x331aacaa 0x3319b000 + 64682 
3 CoreMedia      0x32306000 0x32303000 + 12288 
4 MediaToolbox     0x35169fba 0x35166000 + 16314 
5 CoreMedia      0x32325bc6 0x32303000 + 142278 
6 libsystem_c.dylib    0x331aac16 0x3319b000 + 64534 
7 libsystem_c.dylib    0x331aaad0 0x3319b000 + 64208 

Thread 4 name: com.apple.NSURLConnectionLoader 
Thread 4: 
0 libsystem_kernel.dylib   0x3630f010 0x3630e000 + 4112 
1 libsystem_kernel.dylib   0x3630f206 0x3630e000 + 4614 
2 CoreFoundation     0x343d841c 0x3434b000 + 578588 
3 CoreFoundation     0x343d7154 0x3434b000 + 573780 
4 CoreFoundation     0x3435a4d6 0x3434b000 + 62678 
5 CoreFoundation     0x3435a39e 0x3434b000 + 62366 
6 Foundation      0x35d5abc2 0x35d4a000 + 68546 
7 Foundation      0x35d5aa8a 0x35d4a000 + 68234 
8 Foundation      0x35dee59a 0x35d4a000 + 673178 
9 libsystem_c.dylib    0x331aac16 0x3319b000 + 64534 
10 libsystem_c.dylib    0x331aaad0 0x3319b000 + 64208 

Thread 5 name: com.apple.CFSocket.private 
Thread 5: 
0 libsystem_kernel.dylib   0x3631f570 0x3630e000 + 71024 
1 CoreFoundation     0x343dc66a 0x3434b000 + 595562 
2 libsystem_c.dylib    0x331aac16 0x3319b000 + 64534 
3 libsystem_c.dylib    0x331aaad0 0x3319b000 + 64208 

Unknown thread crashed with unknown flavor: 5, state_count: 1 
+0

Đây là bài đăng của người khác gặp lỗi tương tự. Nó có giúp ích gì không? http://purushukla.blogspot.com/2011/10/application-has-active-assertions.html – Jay

Trả lời

0

beginBackgroundTaskWithExpirationHandler có một giới hạn thời gian mà bạn có thể vượt. Bạn có thể xem thời gian còn lại với thuộc tính backgroundTimeRemaining của UIApplication.

0

Bạn không thể dựa vào việc kết thúc tác vụ nền khi ứng dụng quay trở lại nền trước thông qua applicationWillEnterForeground(). iOS chỉ cho phép 3 phút để thực hiện công việc trong nền. Đây là lý do tại sao phương thức bắt đầu nhiệm vụ nền có một trình xử lý hết hạn. Bạn nên dọn dẹp công việc của bạn (rất nhanh) và kết thúc nhiệm vụ đó (thông qua endBackgroundTask) khi xử lý hết hạn được gọi là:

UIBackgroundTaskIdentifier bkgndTask; 
--- 
bkgndTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
    if (bkgndTask != UIBackgroundTaskInvalid) { 
     [[UIApplication sharedApplication] bkgndTask]; 
     bkgndTask = UIBackgroundTaskInvalid; 
    } 
}]; 
Các vấn đề liên quan