2012-06-22 17 views
7

Tôi đã một NSRunLoop trong ứng dụng của tôi kết nối với một bộ đếm thời gian:Điều gì sẽ xảy ra với NSRunLoop và bộ hẹn giờ của tôi khi ứng dụng chuyển sang nền và trả về?

NSTimer *updateTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(onUpdateTimer) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes]; 

Khi ứng dụng đi vào nền, những gì xảy ra với runloop này? Nó biến mất, có nghĩa là tôi nên tạo lại nó trong applicationDidBecomeActive:?

Trả lời

8

Bạn nên dừng bộ hẹn giờ khi ứng dụng của bạn bị tạm ngưng và khởi động lại chúng trong -applicationDidBecomeActive:. Xem "Việc cần làm khi gián đoạn xảy ra" trong số Responding to Interruptions. Bạn không phải lo lắng về vòng lặp chạy, mặc dù - hệ điều hành sẽ chăm sóc phần đó.

+0

Được rồi, vì vậy tôi không cần phải dừng vòng chạy theo cách thủ công. Tôi có cần phải tạo một ứng dụng trên applicationDidBecomeActive: sử dụng cùng một mã không? – DGund

+1

No. Hãy thử nó - vòng lặp chạy của bạn (s) nên được tốt. – Caleb

+0

Ghi nhớ rằng các cuộc gọi đến bị đình chỉ và các cuộc gọi đến applicationDidBecomeActive không nhất thiết phải cân bằng một cho một, do đó, không xếp hàng những thứ willy nilly trong applicationDidBecomeActive mà không có một số thông minh. – Gruntcakes

Các vấn đề liên quan