Video: LỖI FACEBOOK "NGHIÊM TRỌNG" TRÊN iOS!! ANH EM CÓ BỊ??? 2025
Nếu người dùng phản ứng với sự gián đoạn (SMS ví dụ như tin nhắn) hoặc đã khởi chạy một ứng dụng khác, ứng dụng của bạn sẽ được chuyển sang nền.
Khi người dùng chấp nhận thông báo hoặc gián đoạn, hoặc nhấn nút Home (hoặc khi hệ thống khởi chạy một ứng dụng khác), ứng dụng của bạn sẽ chuyển sang trạng thái nền, nơi nó bị treo. (Nếu ứng dụng cần tiếp tục chạy, nó có thể yêu cầu thời gian thực hiện từ hệ thống)
Đây là các thư mà ứng dụng của bạn có thể phản hồi sau khi nó được di chuyển vào nền:
-
Thông báo applicationDidEnterBackground: : Khi ứng dụng của bạn lần đầu tiên vào nền nhà nước, nó được gửi ứng dụngDidEnterBackground: tin nhắn. Trong phương pháp này, bạn nên lưu lại bất kỳ dữ liệu chưa lưu hoặc trạng thái (nơi người dùng nằm trong ứng dụng - chế độ xem hiện tại, các tùy chọn được chọn và những thứ tương tự) đến một tệp tin tạm thời hoặc cơ sở dữ liệu sở thích " trên đĩa. "
Biết rằng Apple gọi hệ thống lưu trữ IOS là đĩa mặc dù đó là một ổ SSD, vì vậy nếu Apple gọi nó là điều đó, có lẽ bạn nên quá, chỉ để bạn đừng nhầm lẫn quá nhiều người.
Mặc dù ứng dụng của bạn nhập trạng thái nền, bạn không có gì đảm bảo rằng nó sẽ vẫn ở đó vô thời hạn. Nếu bộ nhớ trở nên hạn chế, iOS sẽ tẩy các ứng dụng nền để có thêm chỗ cho ứng dụng tiền cảnh.
Bạn cần phải làm mọi thứ cần thiết để có thể khôi phục ứng dụng của mình trong trường hợp nó được xoá sau đó khỏi bộ nhớ để lần sau khi người dùng khởi chạy ứng dụng của bạn, ứng dụng của bạn có thể sử dụng thông tin đó để khôi phục lại ứng dụng của bạn đến trạng thái trước đó. Bạn cũng phải thực hiện các thao tác dọn dẹp bổ sung, chẳng hạn như xóa các tệp tạm thời.
Nếu ứng dụng của bạn bị xóa khi nó ở trạng thái tạm ngưng, nó sẽ không nhận thấy nó đã bị xoá khỏi bộ nhớ. Bạn cần lưu lại bất kỳ dữ liệu nào trước!
Khi đại biểu của bạn được gửi ứng dụng applicationDidEnterBackground:, ứng dụng của bạn có thời gian không có giấy tờ để hoàn thành công việc. Nếu phương pháp không trả lại trước khi thời gian hết (hoặc nếu ứng dụng của bạn không yêu cầu thời gian thực hiện nhiều hơn từ iOS), ứng dụng của bạn sẽ bị chấm dứt và xóa khỏi bộ nhớ.
Nếu ứng dụng của bạn yêu cầu thời gian thực hiện nhiều hơn hoặc nó đã tuyên bố rằng nó thực hiện nền, nó được phép tiếp tục chạy sau khi phương thức applicationDidEnterBackground: trả về. Nếu không, ứng dụng nền của bạn (bây giờ) được chuyển đến trạng thái bị treo ngay sau khi trở về từ phương pháp applicationDidEnterBackground:.
Nếu ứng dụng ở chế độ nền, nó có thể được khởi chạy lại. Điều này có thể xảy ra nếu người dùng chọn ứng dụng từ màn hình chính hoặc thanh đa nhiệm hoặc nó được khởi chạy bởi hệ thống nếu ứng dụng xử lý các sự kiện trong nền hoặc theo dõi một sự thay đổi vị trí quan trọng.
-
Thông báo applicationWillEnterForeground: : Khi ứng dụng của bạn được khởi chạy lại từ nền, nó sẽ gửi ứng dụngWillEnterForeground: message. Trong phương pháp này, bạn cần hoàn tác những gì bạn đã làm trong phương pháp applicationDidEnterBackground: không phải là ứng dụngWillResignActive, bạn hoàn tác sau đó.
Nếu người dùng bỏ qua tin nhắn SMS hoặc ứng dụng được khởi chạy lại từ nền, ứng dụng của bạn sẽ được kích hoạt lại và bắt đầu chạm và các sự kiện khác.
Khi ứng dụng của bạn được kích hoạt lại, nó sẽ gửi ứng dụngDidBecomeActive: message.
Bạn có thể sử dụng phương pháp applicationDidBecomeActive: để khôi phục lại ứng dụng cho trạng thái trước khi gián đoạn. Ở đây bạn hoàn tác những gì bạn đã làm trong phương pháp applicationWillResignActive, chẳng hạn như khởi động lại bất kỳ tác vụ nào đã bị tạm dừng (hoặc chưa bắt đầu) trong khi ứng dụng không hoạt động. Nếu ứng dụng trước đây là nền, bạn có thể cần phải làm mới giao diện người dùng.
Trong khi ứng dụng đang ở trạng thái tạm ngưng, hệ thống sẽ theo dõi và kết nối (sự kiện thực sự mạng ra ) có thể có tác động đến ứng dụng đó khi nó khởi chạy trở lại. Ngay khi ứng dụng của bạn được khởi động và chạy lại, hệ thống sẽ phân phối các sự kiện đó đến nó.
Đối với hầu hết các sự kiện này, cơ sở hạ tầng hiện tại của ứng dụng của bạn chỉ cần đáp ứng một cách thích hợp. Ví dụ: nếu hướng thiết bị thay đổi, trình điều khiển chế độ xem của ứng dụng của bạn sẽ tự động cập nhật định hướng giao diện một cách thích hợp.
Ứng dụng thường được chuyển sang nền khi bị gián đoạn hoặc khi người dùng thoát. Nhưng nếu ứng dụng được biên dịch với phiên bản SDK trước đó hoặc đang chạy trên một phiên bản hệ điều hành trước đó không hỗ trợ đa tác vụ - hoặc nếu bạn quyết định rằng bạn không muốn ứng dụng chạy dưới nền và bạn đặt khoá UIApplicationExitsOnSuspend trong Thông tin của nó. tệp plist - iOS chấm dứt ứng dụng của bạn.
Thậm chí nếu ứng dụng của bạn hỗ trợ nhiều thao tác (hầu như tất cả ở điểm này), bạn vẫn phải chuẩn bị sẵn sàng để ứng dụng của bạn bị giết mà không thông báo. Người dùng có thể giết các ứng dụng một cách rõ ràng bằng thanh đa tác vụ.
Ngoài ra, nếu bộ nhớ bị hạn chế, hệ thống có thể loại bỏ các ứng dụng khỏi bộ nhớ để tạo ra nhiều chỗ hơn. Nếu nó xóa ứng dụng bị đình chỉ của bạn, nó sẽ không cung cấp cho bạn bất kỳ cảnh báo, ít chú ý hơn! Tuy nhiên, nếu ứng dụng của bạn hiện đang chạy trong trạng thái nền, hệ thống sẽ gọi phương thức applicationWillTerminate: của delegate ứng dụng.
Khi delegate ứng dụng của bạn được gửi tin nhắn applicationWillTerminate: trong các ứng dụng không lưu địa chỉ, hoặc các ứng dụng đang chạy ẩn, bạn cần phải làm những điều giống như bạn thực hiện trong ứng dụngDidEnterBackground: ngoại trừ thời gian bạn làm cho họ biết rằng ứng dụng của bạn đã thắng không trở lại từ phía sau.
ApplicationWillTerminate của bạn: việc triển khai phương pháp có giới hạn thời gian (mặc dù không có giấy tờ) để làm những gì nó cần làm và trở lại. Bất kỳ lâu hơn và ứng dụng của bạn được chấm dứt và thanh trừng khỏi bộ nhớ. (Kẻ hủy diệt không hề hay biết).
