2011-10-29 33 views
15

Tôi cần sự trợ giúp của bạn trong việc làm rõ sự hiểu biết của tôi về các trạng thái khác nhau của một ứng dụng. Tôi sẽ tuyên bố giải thích của tôi - nhưng xin vui lòng sửa tôi.Cần làm rõ về UIApplicationState

1) Ứng dụng được khởi chạy và chạy ở nền trước: state = UIApplicationStateActive
2) Người dùng nhấn nút home: state = UIApplicationStateBackground (????).

Debug stmt in my app shows it to be Active 

3) tài đúp vòi Home và giết chết các ứng dụng: state = UIApplicationStateInactive

Nếu giá trị cho trường hợp 2 là thực sự hoạt động, sau đó khi được giá trị thiết lập để nền?

Ứng dụng dựa trên vị trí của tôi dựa trên các giá trị này để thực hiện hành động thích hợp cho người dùng.

if (([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) || 
    ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)  ) { 
    // isInBackground = YES; 
    // ------ UI not available 
} 
else { 
    // isInBackground = NO; 
    // ------ UI is available 
} 

Kính trọng, Sam.

Trả lời

51

Khi người dùng chạm vào biểu tượng ứng dụng, ứng dụng một thời gian ngắn trải qua trạng thái chuyển đổi của UIApplicationStateInactive trên đường trở thành UIApplicationStateActive. Đây là nơi ứng dụng tự sẵn sàng hiển thị cho người dùng.

Khi ứng dụng đang mở, trạng thái ứng dụng là UIApplicationStateActive.

Nếu người dùng nhấn nút home và quay trở lại bàn đạp (màn hình chính) hoặc ứng dụng bị gián đoạn bởi một thứ gì đó, chẳng hạn như cuộc gọi điện thoại, trạng thái ứng dụng sẽ chuyển về UIApplicationStateInactive.

Để trạng thái ứng dụng của bạn trở thành UIApplicationStateBackground, ứng dụng của bạn sẽ phải đăng ký một quy trình nền. Xem xét cách làm nền các dịch vụ vị trí của bạn.

+1

Cảm ơn !! Rất rõ ràng. – Sam

+3

@forgot không hoàn toàn đúng.'Ứng dụng đang chạy ở nền trước nhưng hiện không nhận được sự kiện. (Nó có thể được thực thi mã khác mặc dù.) Một ứng dụng thường nằm trong trạng thái này chỉ một thời gian ngắn khi nó chuyển sang trạng thái khác.' điều này nói bởi apple doc. bạn có thể biết thêm tại đây.http: //developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Kamarshad

+0

Tôi hiểu rằng, dường như điều đó dường như không liên quan đến câu hỏi tại thời gian. Tôi sẽ chỉnh sửa nó để hiển thị câu trả lời hoàn chỉnh hơn. – forgot

2

của Apple tài liệu: UIApplicationState Constants Reference

  • Swift: .Active | Objective-C: UIApplicationStateActive

Các ứng dụng đang chạy ở mặt trước và hiện đang nhận các sự kiện.

Có sẵn trong iOS 4.0 trở lên.

  • Swift: .Inactive | Objective-C: UIApplicationStateInactive

Các ứng dụng đang chạy ở mặt trước nhưng không nhận được sự kiện.Điều này có thể xảy ra do gián đoạn hoặc do ứng dụng là chuyển sang hoặc từ nền.

Có sẵn trong iOS 4.0 trở lên.

  • Swift: .Background | Objective-C: UIApplicationStateBackground

Các ứng dụng đang chạy ở chế độ nền.

Có sẵn trong iOS 4.0 trở lên.

0

Một số ví dụ:

UIApplicationStateActive - App đang chạy trong foreground. Đơn giản.

UIApplicationStateInactive - Ví dụ: Ứng dụng ở chế độ nền và đang mở thông qua một thông báo đẩy (chuyển đổi atm). Hoặc trung tâm kiểm soát/thông báo được trình bày phía trên ứng dụng của bạn. Bạn thấy nó, ở tiền cảnh.

UIApplicationStateBackground - Ứng dụng ở chế độ nền nhưng vẫn chạy. Ví dụ: phát nhạc. Sau đó - điều này có thể mất một lúc hoặc không (tùy thuộc vào quá trình bạn đang chạy trong nền), nhưng trong một thời điểm ứng dụng của bạn bị giết. Bạn sẽ thấy ảnh chụp nhanh và biểu tượng của ứng dụng giữa các ứng dụng thu nhỏ nhưng ứng dụng sẽ được khởi chạy lại trước.

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