Ứng dụng của tôi hỗ trợ cập nhật vị trí nền (cụ thể với theo dõi vị trí quan trọng).Tôi có nên tránh giao diện người dùng khi ứng dụng iOS được khởi chạy ở chế độ nền
Tôi có cần phải ngăn chặn giao diện người dùng (thông qua bộ điều khiển vv) không khi tải xuống khi tôi xác định ứng dụng ở chế độ nền (application.applicationState == UIApplicationStateBackground
)?
Mục đích của tôi là tránh tải giao diện người dùng nặng (đó là ứng dụng LỚN) ở chế độ nền, có thể lãng phí tất cả thời gian giới hạn mà tôi có trong nền để thực sự phản hồi cập nhật vị trí.
Ví dụ (trong ObjC, nhưng câu hỏi cũng là dành cho Swift), giả sử tôi có một số RootViewController
mà khởi và nắm giữ toàn bộ controllers/hệ thống phân cấp xem, tôi nên, trong viewDidLoad
làm:
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
// Root view controller loaded while in background, so doing only background stuff
[self justDoBackgroundStuffWithoutUI];
} else {
// Root view controller loaded normally, so loading normal UI
[self initializeUIAndChildControllers];
}
? Hoặc tôi chỉ nên "tin tưởng" iOS để bỏ qua tất cả các nhiệm vụ giao diện người dùng, bởi vì nó sẽ biết nó ở trạng thái nền?
Bạn chỉ có thể tin tưởng iOS để xử lý việc này, nó sẽ không hiển thị giao diện người dùng ở trạng thái nền, điều đó được tích hợp vào hệ điều hành. Khung công tác UIKit cơ bản sẽ quyết định xem ứng dụng có cần thực sự hiển thị hay không. Ghi nhớ rằng các sự kiện của vòng đời ứng dụng cho các bộ điều khiển xem chủ yếu là để đáp ứng với tương tác của người dùng, một khi viewDidLoad và viewDidAppear đã chạy phần còn lại chỉ thực sự chạy khi người dùng thực hiện điều gì đó, mà họ sẽ không ở trong khi ứng dụng không ở tiền cảnh – Scriptable
suy nghĩ sau đó là những gì nếu bộ điều khiển của tôi cũng ví dụ tải về nhiều hình ảnh tự động trên 'viewDidLoad' của họ - đó là, tôi đoán, sẽ không bị bỏ qua bởi các os. Có lẽ 'UIImageView'a sẽ không được hiển thị, nhưng dữ liệu và' UIImage 'sẽ thực sự được tải. – mllm
Trong trường hợp đó yêu cầu mạng 'nên' vẫn hoàn thành, nhưng khi một applciation được nền bất kỳ nhiệm vụ còn lại chỉ có một số lượng hạn chế thời gian để hoàn thành những gì họ đang làm trước khi bị đình chỉ/chấm dứt. nó sẽ không chỉ tiếp tục chạy không chính xác. – Scriptable