Các ứng dụng đã đóng (không chạy) có thể truy cập ứng dụng làm mới nền không?


1

Các ứng dụng đã đóng (tức là không chạy hoặc bị treo) có thể truy cập làm mới ứng dụng nền hoặc sửa đổi trạng thái chương trình của chúng để có quyền truy cập vào làm mới ứng dụng nền không? Và ngược lại, nếu làm mới ứng dụng nền bị vô hiệu hóa, ứng dụng chỉ có thể truy cập dữ liệu ở nền trước?

Ví dụ 1: Ứng dụng trò chuyện vẫn nhận được thông báo nếu chúng ở trạng thái chương trình "không chạy". Làm thế nào để họ làm điều này?

Ví dụ 2: Nếu tôi đang lưu một ghi chú (tắt ứng dụng nền) và tôi quay lại màn hình chính trước khi lưu ghi chú xong, nó có tiếp tục lưu không?

Từ các tài liệu iOS, vòng đời ứng dụng được mô tả dưới đây.

Thay đổi trạng thái trong ứng dụng iOS

Hướng dẫn dành cho nhà phát triển iOS: Vòng đời ứng dụng


Bạn đang hỏi làm thế nào để mã làm mới ứng dụng nền? Các ứng dụng có thể thực hiện các sự kiện làm mới trong nền miễn là chúng tuân theo các nguyên tắc mã hóa chính xác. Làm thế nào để mã hóa là lạc đề cho trang web này.
fsb

@fsb Đây không phải là một câu hỏi lập trình. Nhưng có lẽ tôi có thể nhận được câu trả lời tốt hơn từ các lập trình viên iOS. Trang web nào sẽ phù hợp hơn?
y3sh

Liên kết bạn cung cấp có câu trả lời cho câu hỏi của bạn. Nếu bạn đọc phần Thực thi nền, bạn sẽ thấy cách thực hiện.
fsb

@fsb Hóa ra, BAR! = Thực hiện nền ... Tôi nghĩ đây là nơi mà sự nhầm lẫn của tôi đến từ.
y3sh

Câu trả lời:


3

Đừng nhầm lẫn Đình chỉ với Không chạy. Bị treo có nghĩa là ứng dụng vẫn còn trong bộ nhớ nhưng nếu không thì không sử dụng bất kỳ tài nguyên nào. Không chạy có nghĩa là ứng dụng hoàn toàn không có trong bộ nhớ do bị vô tình chấm dứt, do hệ thống yêu cầu tài nguyên cho ứng dụng nền trước hoặc do người dùng buộc thoát ứng dụng.

Làm mới ứng dụng nền (BAR) = / = "Nền" như trong sơ đồ đó:

  • BAR cho phép các ứng dụng cập nhật nội dung trên cơ sở rất hạn chế, theo lịch trình được thiết lập và thi hành bởi iOS, thường là khoảng một lần mỗi ngày.

  • Trạng thái Nền được hiển thị trong sơ đồ đó là Thực thi nền, cho phép các ứng dụng hoàn thành một số tác vụ nhất định trong nền. BAR bị vô hiệu hóa không ảnh hưởng đến các ứng dụng có thể sử dụng Thực thi nền.

Thực thi nền thường chỉ được phép nếu người dùng không bị ép buộc thoát khỏi ứng dụng (ngoại lệ là "ứng dụng vị trí"). Các ứng dụng ở bất kỳ tiểu bang nào, bao gồm cả Đã kết thúc, có thể sử dụng Thực thi nền nếu chúng đáp ứng các yêu cầu bên dưới. Nếu cần thiết, chúng sẽ được hệ thống khởi chạy lại vào nền (một lần nữa, tuân theo các giới hạn bắt buộc ở trên). Xem câu trả lời của tôi cho một câu hỏi tương tự :

  • Các ứng dụng phát nội dung âm thanh cho người dùng khi ở chế độ nền, chẳng hạn như ứng dụng trình phát nhạc
  • Ứng dụng ghi nội dung âm thanh khi ở chế độ nền
  • Các ứng dụng giúp người dùng thông báo về vị trí của họ mọi lúc, chẳng hạn như ứng dụng điều hướng
  • Các ứng dụng hỗ trợ Giao thức thoại qua Internet (VoIP)
  • Các ứng dụng cần tải xuống và xử lý nội dung mới thường xuyên
  • Ứng dụng nhận được cập nhật thường xuyên từ các phụ kiện bên ngoài

Có một trường hợp khác, đó là tải xuống trong nền. Tuy nhiên, đây là trường hợp đặc biệt vì ứng dụng vẫn bị treo và quá trình tải xuống được chuyển sang hệ thống, trong trường hợp ứng dụng phải bị hệ thống chấm dứt để lấy lại tài nguyên.

Những gì không có trong câu trả lời được liên kết là thông báo. Thông báo không cục bộ được tạo trên máy chủ ở đâu đó và được đẩy đến thiết bị thông qua Thông báo đẩy của Apple (APN). Hành động nhận thông báo không cho thấy chính ứng dụng đã làm bất cứ điều gì.

Trong ví dụ ghi chú của bạn, khi ứng dụng ghi chú chuyển sang nền, nó sẽ được cung cấp một khoảng thời gian ngắn để lưu trạng thái. Nếu nó đang trong quá trình thực hiện một việc gì đó như lưu một ghi chú và không thể hoàn thành nó trong thời gian cho phép, thì về cơ bản, nó có thể yêu cầu gia hạn, sau đó thông báo cho hệ thống khi hoàn thành để ứng dụng có thể bị treo. Loại công việc nền này có thể được sử dụng bởi bất kỳ ứng dụng nào, không chỉ những ứng dụng thuộc danh mục được liệt kê ở trên.


Câu trả lời tuyệt vời ... có vẻ như iOS theo dõi thói quen của người dùng với các ứng dụng để sắp xếp các khoảng thời gian hiệu quả nhất với việc sử dụng ứng dụng, kết nối wifi, thời lượng pin. Tôi tưởng tượng rằng nếu bạn sử dụng một ứng dụng nhiều, nó sẽ được cung cấp thêm hoạt động BAR. Vì vậy, câu trả lời là trạng thái chạy ứng dụng không thành vấn đề. Câu hỏi liên quan thảo luận về các khoảng thời gian BAR: apple.stackexchange.com/questions/104572/iêu
y3sh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.