Đóng quảng cáo

Vẫn còn rất nhiều người chưa biết cách hoạt động đa nhiệm trong iOS. Tuy nhiên, trước hết, cần phải chỉ ra rằng đây không phải là đa nhiệm thực sự mà là một giải pháp rất thông minh, không gây gánh nặng cho hệ thống hoặc người dùng.

Người ta thường có thể nghe thấy những quan niệm mê tín rằng các ứng dụng chạy nền trong iOS sẽ làm đầy bộ nhớ hệ điều hành, dẫn đến hệ thống bị chậm và hao pin, vì vậy người dùng nên tắt chúng theo cách thủ công. Thanh đa nhiệm thực tế không chứa danh sách tất cả các tiến trình đang chạy trong nền mà chỉ chứa các ứng dụng được khởi chạy gần đây nhất. Vì vậy người dùng không phải lo lắng về các tiến trình chạy ngầm ngoại trừ một số trường hợp. Khi bạn nhấn nút Home, ứng dụng thường chuyển sang chế độ ngủ hoặc đóng để không tải bộ xử lý hoặc pin nữa và giải phóng bộ nhớ cần thiết nếu cần.

Vì vậy, đây không phải là đa nhiệm hoàn toàn khi bạn có hàng tá tiến trình đang chạy. Chỉ có một ứng dụng luôn chạy ở nền trước, ứng dụng này sẽ bị tạm dừng hoặc tắt hoàn toàn nếu cần. Chỉ có một số tiến trình phụ chạy ở chế độ nền. Chính vì thế mà bạn sẽ hiếm khi gặp tình trạng treo ứng dụng trên iOS, chẳng hạn Android tràn ngập các ứng dụng đang chạy mà người dùng phải quan tâm. Một mặt, điều này làm cho việc sử dụng thiết bị trở nên khó chịu, mặt khác, nó gây ra, chẳng hạn như khởi động và chuyển đổi giữa các ứng dụng chậm.

Loại thời gian chạy ứng dụng

Ứng dụng trên thiết bị iOS của bạn đang ở một trong 5 trạng thái sau:

  • Đang chạy: ứng dụng được khởi động và chạy ở nền trước
  • Lý lịch: nó vẫn đang chạy nhưng chạy ngầm (chúng ta có thể sử dụng các ứng dụng khác)
  • Cấm: Vẫn dùng RAM nhưng không chạy
  • Không hoạt động: ứng dụng đang chạy nhưng các lệnh gián tiếp (ví dụ: khi bạn khóa thiết bị với ứng dụng đang chạy)
  • Không chạy: Ứng dụng đã chấm dứt hoặc chưa bắt đầu

Sự nhầm lẫn xảy ra khi ứng dụng chạy ở chế độ nền để không làm phiền. Khi bạn nhấn nút Home hoặc sử dụng cử chỉ để đóng ứng dụng (iPad), ứng dụng sẽ chuyển sang chế độ chạy nền. Hầu hết các ứng dụng đều bị treo trong vòng vài giây (Chúng được lưu trữ trong RAM của iDevice để có thể khởi chạy nhanh chóng, chúng không tải bộ xử lý nhiều và do đó tiết kiệm pin) Bạn có thể nghĩ rằng nếu một ứng dụng tiếp tục sử dụng bộ nhớ, bạn có xóa nó theo cách thủ công để giải phóng nó. Nhưng bạn không nhất thiết phải làm điều đó, vì iOS sẽ làm điều đó cho bạn. Nếu bạn có một ứng dụng đòi hỏi khắt khe bị treo ở chế độ nền, chẳng hạn như một trò chơi sử dụng nhiều RAM, iOS sẽ tự động xóa ứng dụng đó khỏi bộ nhớ khi cần thiết và bạn có thể khởi động lại ứng dụng đó bằng cách nhấn vào biểu tượng ứng dụng.

Không có trạng thái nào trong số này được phản ánh trên thanh đa nhiệm, bảng điều khiển chỉ hiển thị danh sách các ứng dụng được khởi chạy gần đây bất kể ứng dụng đó bị dừng, tạm dừng hay chạy trong nền. Bạn cũng có thể nhận thấy ứng dụng hiện đang chạy không xuất hiện trong bảng Đa nhiệm

Tác vụ nền

Thông thường, khi bạn nhấn nút Home, ứng dụng sẽ chạy ở chế độ nền và nếu bạn không sử dụng, ứng dụng sẽ tự động tạm dừng trong vòng năm giây. Vì vậy, chẳng hạn, nếu bạn đang tải xuống một podcast, hệ thống sẽ đánh giá nó là một ứng dụng đang chạy và trì hoãn việc chấm dứt sau 10 phút. Chậm nhất sau mười phút, quá trình này sẽ được giải phóng khỏi bộ nhớ. Tóm lại, bạn không phải lo lắng về việc làm gián đoạn quá trình tải xuống của mình khi nhấn Nút Home, nếu không mất quá XNUMX phút để hoàn tất.

Chạy nền không xác định

Trong trường hợp không hoạt động, hệ thống sẽ chấm dứt ứng dụng trong vòng năm giây và trong trường hợp tải xuống, việc chấm dứt sẽ bị trì hoãn trong mười phút. Tuy nhiên, có một số ít ứng dụng yêu cầu chạy ở chế độ nền. Dưới đây là một số ví dụ về các ứng dụng có thể chạy ẩn vô thời hạn trong iOS 5:

  • Các ứng dụng phát âm thanh và phải bị gián đoạn trong một thời gian (tạm dừng nhạc khi gọi điện thoại, v.v.),
  • Ứng dụng theo dõi vị trí của bạn (phần mềm điều hướng),
  • Các ứng dụng nhận cuộc gọi VoIP, ví dụ: nếu bạn sử dụng Skype, bạn có thể nhận cuộc gọi ngay cả khi ứng dụng ở chế độ nền,
  • Tải xuống tự động (ví dụ Newsstand).

Tất cả các ứng dụng sẽ bị đóng nếu chúng không còn thực hiện một tác vụ nào nữa (chẳng hạn như tải xuống trong nền). Tuy nhiên, có những trường hợp ngoại lệ chạy liên tục trong nền, chẳng hạn như ứng dụng Thư gốc. Nếu chúng chạy ở chế độ nền, chúng sẽ chiếm bộ nhớ, mức sử dụng CPU hoặc giảm tuổi thọ pin

Các ứng dụng được phép chạy ẩn vô thời hạn có thể làm bất cứ điều gì chúng làm trong khi đang chạy, từ phát nhạc đến tải xuống các tập Podcast mới.

Như tôi đã đề cập trước đó, người dùng không bao giờ cần đóng các ứng dụng đang chạy ẩn. Ngoại lệ duy nhất cho trường hợp này là khi một ứng dụng chạy ngầm gặp sự cố hoặc không thức dậy sau khi ngủ đúng cách. Sau đó, người dùng có thể đóng các ứng dụng theo cách thủ công trên thanh đa nhiệm, nhưng điều này hiếm khi xảy ra.

Vì vậy, nhìn chung, bạn không cần quản lý các tiến trình nền vì hệ thống sẽ tự xử lý chúng. Đó là lý do tại sao iOS là một hệ thống mới và nhanh đến vậy.

Từ góc nhìn của nhà phát triển

Ứng dụng có thể phản ứng với tổng cộng sáu trạng thái khác nhau như một phần của đa nhiệm:

1. ứng dụngWillResignActive

Trong bản dịch, trạng thái này có nghĩa là ứng dụng sẽ từ chức thành ứng dụng đang hoạt động (nghĩa là ứng dụng ở nền trước) trong tương lai (chỉ trong vài mili giây). Điều này xảy ra, chẳng hạn như khi nhận cuộc gọi trong khi sử dụng ứng dụng, nhưng đồng thời, phương pháp này cũng gây ra trạng thái này trước khi ứng dụng chuyển sang chế độ nền, vì vậy bạn cần tính đến những thay đổi này. Phương pháp này cũng phù hợp, chẳng hạn như nó tạm dừng tất cả các hoạt động mà nó đang thực hiện khi có cuộc gọi đến và đợi cho đến khi kết thúc cuộc gọi.

2. ứng dụngDidEnterBackground

Trạng thái cho biết ứng dụng đã chuyển sang chế độ nền. Nhà phát triển nên sử dụng phương pháp này để tạm dừng tất cả các quy trình không nhất thiết phải chạy ở chế độ nền và xóa bộ nhớ đối với dữ liệu không được sử dụng cũng như các quy trình khác, chẳng hạn như bộ hẹn giờ hết hạn, xóa các hình ảnh đã tải khỏi bộ nhớ không nhất thiết cần thiết hoặc đóng kết nối với máy chủ, trừ khi việc ứng dụng hoàn thành các kết nối ở chế độ nền là rất quan trọng. Khi phương thức này được gọi trong ứng dụng, về cơ bản, nó sẽ được sử dụng để tạm dừng hoàn toàn ứng dụng nếu một phần của nó không bắt buộc phải chạy ở chế độ nền.

3. ứng dụngWillEnterForeground

Trạng thái này trái ngược với trạng thái đầu tiên, nơi ứng dụng sẽ chuyển sang trạng thái hoạt động. Trạng thái đơn giản có nghĩa là ứng dụng đang ngủ sẽ tiếp tục từ nền và xuất hiện ở nền trước trong vòng vài mili giây tiếp theo. nhà phát triển nên sử dụng phương pháp này để tiếp tục mọi quy trình không hoạt động khi ứng dụng ở chế độ nền. Các kết nối với máy chủ phải được thiết lập lại, đặt lại bộ hẹn giờ, tải hình ảnh và dữ liệu vào bộ nhớ cũng như các quy trình cần thiết khác có thể tiếp tục ngay trước khi người dùng nhìn thấy lại ứng dụng đã tải.

4. applicationDidBecomeActive

Trạng thái cho biết ứng dụng vừa mới hoạt động sau khi được khôi phục về nền trước. Đây là phương pháp có thể được sử dụng để thực hiện các điều chỉnh bổ sung cho giao diện người dùng hoặc khôi phục giao diện người dùng về trạng thái ban đầu, v.v. Điều này thực sự xảy ra tại thời điểm người dùng đã nhìn thấy ứng dụng trên màn hình, vì vậy cần phải thực hiện xác định một cách thận trọng những gì xảy ra trong phương pháp này và trong phương pháp trước đó. Chúng được gọi lần lượt với sự khác biệt vài mili giây.

5. ứng dụngWillTerminate

Trạng thái này xảy ra vài mili giây trước khi ứng dụng thoát, tức là trước khi ứng dụng thực sự chấm dứt. Hoặc thủ công từ đa nhiệm hoặc khi tắt thiết bị. Phương pháp này nên được sử dụng để lưu dữ liệu đã xử lý, kết thúc mọi hoạt động và xóa dữ liệu không còn cần thiết.

6. applicationDidReceiveMemoryWarning

Đây là trạng thái cuối cùng được thảo luận nhiều nhất. Nó có trách nhiệm xóa ứng dụng khỏi bộ nhớ iOS nếu cần thiết nếu nó sử dụng tài nguyên hệ thống một cách không cần thiết. Tôi không biết cụ thể iOS làm gì với các ứng dụng nền, nhưng nếu nó cần một ứng dụng để giải phóng tài nguyên cho các quy trình khác, nó sẽ nhắc ứng dụng đó bằng cảnh báo bộ nhớ để giải phóng mọi tài nguyên mà nó có. Vì vậy, phương pháp này được gọi trong ứng dụng. Các nhà phát triển nên triển khai nó để ứng dụng loại bỏ bộ nhớ mà nó đã phân bổ, lưu mọi thứ đang diễn ra, xóa dữ liệu không cần thiết khỏi bộ nhớ và giải phóng bộ nhớ một cách thỏa đáng. Đúng là nhiều nhà phát triển, ngay cả những người mới bắt đầu, không nghĩ đến hoặc hiểu những điều như vậy và khi đó có thể xảy ra trường hợp ứng dụng của họ đe dọa đến tuổi thọ pin và/hoặc tiêu tốn tài nguyên hệ thống một cách không cần thiết, ngay cả ở chế độ nền.

Nhận định

Sáu trạng thái này và các phương thức liên quan của chúng là nền tảng của tất cả "đa nhiệm" trong iOS. đó là một hệ thống tuyệt vời, miễn là các nhà phát triển không bỏ qua thực tế là cần phải chịu trách nhiệm về những gì ứng dụng xuất hiện trên thiết bị của người dùng của họ, nếu chúng bị thu nhỏ hoặc nhận được cảnh báo từ hệ thống, v.v.

Nguồn: macworld.com

tác giả: Jakub Požárek, Martin Doubek (ArnieX)

 
Bạn cũng có một vấn đề cần giải quyết? Bạn có cần lời khuyên hoặc có thể tìm thấy ứng dụng phù hợp? Đừng ngần ngại liên hệ với chúng tôi qua biểu mẫu trong phần Tư vấn, lần sau chúng tôi sẽ trả lời câu hỏi của bạn.

.