2011-09-08 30 views
15

Làm thế nào để biết liệu ứng dụng được chấm dứt bởi người dùng hoặc bởi iOS khi ứng dụng khởi động lại>Làm thế nào để biết liệu ứng dụng được chấm dứt bởi người dùng hoặc iOS (sau khi nền 10min)

'Bằng cách sử dụng' có nghĩa là "bằng cách nhấp đúp Trang chủ Nút và nút bấm ". giết bởi người dùng

'By iOS' có nghĩa là "ứng dụng trở thành nền trạng thái hoạt động, và iOS chấm dứt ứng dụng sau 10 phút"

+2

tại sao iOS sẽ chấm dứt ứng dụng của bạn sau 10 phút trong khi ở chế độ nền? – mayuur

+0

Tôi muốn biết liệu người dùng có chết ứng dụng hay không (Bằng cách nhấp vào nút '-' màu đỏ) – ChangUZ

Trả lời

9

iOS có thể chấm dứt ứng dụng của bạn nếu tài nguyên hệ thống thấp - nếu điều này xảy ra, bạn sẽ thấy applicationWillTerminate .

Trước đây, nếu người dùng đã giết ứng dụng (trình quản lý tác vụ, thông qua nút nhấp đúp và sau đó chạm vào màu đỏ '-') thì đó là SIGKILL và applicationWillTerminate không được gọi. Báo cáo vào giữa năm 2013 cho thấy điều này đã thay đổi và applicationWillTerminate hiện được gọi.

Bạn có thể sử dụng NSUserDefaults để viết một số bit trạng thái trong applicationWillTerminate để lưu ý rằng chức năng này đã được gọi và có lẽ đó là một hệ thống giết thay vì người dùng giết.

+2

Về: "Nếu người dùng giết ứng dụng (trình quản lý tác vụ, thông qua nút nhấp đúp và sau đó nhấp vào màu đỏ '-') một SIGKILL và applicationWillTerminate không được gọi. " Chỉ cần cảnh báo rằng hành vi này có thể đã thay đổi tại một số thời điểm. Một nhà phát triển khác trong nhóm của tôi vừa kiểm tra điều này và báo cáo rằng 'applicationWillTerminate' đã được gọi trong trường hợp này. –

+0

Cảm ơn Steve, luôn luôn tốt để giữ cho các câu trả lời được cập nhật. –

+2

Chỉ cần thử nghiệm điều này với trình gỡ lỗi: applicationWillTerminate được gọi, nhưng không phải là không có trình gỡ rối (sử dụng nhật ký bảng điều khiển Xcode cho iPhone5 chạy iOS 7.1) –

10

Nếu ứng dụng của bạn ở trạng thái tạm ngưng, applicationWillTerminate sẽ không bao giờ được gọi bất kể ai đã giết ứng dụng iOS hoặc người dùng.

applicationWillTerminate sẽ chỉ gọi khi ứng dụng của bạn ở chế độ nền và ứng dụng bị chết (iOS hoặc người dùng) nền thuật ngữ có nghĩa là nền đang chạy ở chế độ nền không ở trạng thái bị treo.

Chỉ cần đọc this reference

applicationWillTerminate: -Lets bạn biết rằng ứng dụng của bạn đã được chấm dứt. Phương thức này không được gọi nếu ứng dụng của bạn bị tạm ngưng.

Dưới đây là bảng của các quốc gia khác nhau enter image description here

Background - Ứng dụng trong nền và mã thực thi. Hầu hết các ứng dụng nhập trạng thái này một thời gian ngắn trên đường bị treo. Tuy nhiên, một ứng dụng yêu cầu thời gian thực hiện thêm có thể vẫn ở trạng thái này trong một khoảng thời gian. Ngoài ra, một ứng dụng được khởi chạy trực tiếp vào nền sẽ chuyển sang trạng thái này thay vì trạng thái không hoạt động. Để biết thông tin về cách thực thi mã trong khi ở chế độ nền, hãy xem Thực thi nền.

+1

Câu trả lời rõ ràng nhất cho chủ đề này. Cảm ơn! –