Thứ Ba, 30 tháng 6, 2015

Phân biệc về đa nhiệm trên Android và iOS

Đa nhiệm trên iOS

Thông thường, ai sử dụng các thiết bị di động của Apple (iPhone, iPad) cũng biết thao tác nhấn đúp phím Home, bên dưới màn hình để hiện ra một danh sách các ứng dụng đang chạy. Người dùng muốn chuyển sang ứng dụng nào chỉ việc nhấn vào ứng dụng đó, hoặc muốn tắt thì chỉ việc giữ biểu tượng bất kỳ một lúc, sau khi trên mỗi biểu tượng ứng dụng hiện lên dấu tròn đỏ, chỉ việc nhắp vào đó là ứng dụng sẽ được đóng lại. Nhiều người cho rằng, đây là hình thức chạy đa nhiệm trên iOS và để tiết kiệm pin, nên tắt bớt các ứng dụng đang chạy theo cách này.

Tuy nhiên, sự thực thì cái gọi là đa nhiệm này không giống như mọi người thường nghĩ. Các ứng dụng hiện ở thanh quản lý tác vụ khi nhấn đúp phím Home thực chất không phải là các ứng dụng đang chạy nền, mà chỉ là danh sách hiển thị các ứng dụng chạy gần đây. Nền tảng hệ điều hành được kiểm soát chặt chẽ của Apple cho phép hãng này hạn chế hầu như tất cả các ứng dụng tiếp tục thực thi mã lệnh của mình một khi phím Home đã được bấm. Hay nói cách khác, khi nhấn phím Home và quay về màn hình chủ, gần như mọi ứng dụng sẽ dừng hoạt động (theo một nghĩa nhất định).

Về cơ bản, iOS quy định 5 mức tình trạng cho một ứng dụng. Mức độ thấp nhất là Không hoạt động (Not Running), đề cập đến việc ứng dụng đã được đóng hoặc chưa từng được mở. Mức độ Chưa kích hoạt (Inactivate) là mức độ mà một ứng dụng đang chạy nhưng không thực thi mã lệnh nào cả. Mức độ Kích hoạt (Active) là mức độ mà một ứng dụng đang chạy hoặc đang được sử dụng trên màn hình.

Khi người dùng nhấn nút Home, ứng dụng đang chạy (mức Kích hoạt) sẽ chuyển về trạng thái chạy nền (mức Chạy nền (Background). Mức Chạy nền là mức mà ứng dụng dù không hiển thị ở màn hình chính nhưng vẫn tiếp tục thực thi lệnh. Tuy nhiên, hầu hết các ứng dụng mức Chạy nền sẽ ngay lập tức chuyển sang mức cuối cùng là mức Chờ (Suspended). Mức Chờ mà mức mà ứng dụng được lưu vào bộ nhớ nhưng không sử dụng bất kỳ tài nguyên nào của vi xử lý, không thực thi bất cứ mã lệnh nào. Nếu thiết bị cần thêm tài nguyên bộ nhớ cho một trò chơi hay một ứng dụng nặng ký, các ứng dụng ở mức Chờ sẽ bị xóa khỏi bộ nhớ.

Apple chỉ cho phép duy trì các tác vụ đang chạy nền được thực thi mã lệnh trong một vài giây trong những trường hợp đặc biệt (như các ứng dụng liên quan đến VoIP, định vị…) và các mã lệnh (API) này được hãng kiểm soát rất chặt chẽ. Các mã lệnh của các ứng dụng này vì thế có thể vẫn chạy và không lệ thuộc vào việc ứng dụng đó có được hiển thị trên thanh quản lý tác vụ hay không. Theo hãng thì một ứng dụng tốt phải là ứng dụng tự chuyển về chế độ Chờ mỗi khi thực thi xong mã lệnh và người dùng không cần thiết phải quan tâm đến việc tìm cách điều khiển quá trình này một khi đã sử dụng hệ điều hành iOS.

Đa nhiệm trên Android

Kể từ hệ điều hành Android 4.0 Ice Cream Sandwich, Google đã thay đổi đang kể cách thức quản lý đa nhiệm của mình. Bằng việc đưa ra Danh sách những ứng dụng đang chạy gần đây, người dùng chỉ việc tắt bằng cách xóa nó khỏi danh sách. Cũng như iOS, nó mang lại cho người dùng cảm giác là mình đang quản lý các tác vụ chạy đa nhiệm, và tắt bớt ứng dụng có thể giải phóng thêm bộ nhớ. Nhưng sự thật không hoàn toàn như vậy.

Danh sách các ứng dụng chạy gần đây chỉ đơn giản đúng là danh sách liệt kê các ứng dụng vừa chạy với hình ảnh thu nhỏ. Chúng đơn giản chỉ có mặt trên danh sách mà không đảm bảo là đang thực sự thực thi một mã lệnh nào đó. Tuy nhiên khác với iOS, khi người dùng bấm nút quay về màn hình chính (Home), ứng dụng đang chạy không ngay lập tức chuyển về trạng thái Chờ mà các tiến trình liên quan đến ứng dụng này vẫn tiếp tục chạy nền, vẫn cho phép ứng dụng thực thi các công việc của nó..

Khi người dùng muốn quay lại ứng dụng họ đã thoát, tiến trình chạy của ứng dụng đó sẽ được khôi phục lên màn hình chính gần như tức thời. Lý tưởng mà nói, một thiết bị Android sẽ không bao giờ bị hết bộ nhớ và tất cả các tiến trình của các ứng dụng đang chạy có thể trú ngụ ở RAM vĩnh viễn. Nhưng trên thực tế, đến một thời điểm nào đó mà thiết bị của bạn thấy thiếu tài nguyên bộ nhớ, cũng như iOS, Android sẽ đóng tất cả các tiến trình đang chạy ảnh hưởng đến tài nguyên. Và khi người dùng quay lại mở ứng dụng bị đóng đó, toàn bộ tiến trình của ứng dụng sẽ phải tải lại từ đầu. Vì thế mặc dù ứng dụng này có thể ở trong danh sách các ứng dụng chạy gần đây nhưng thực ra nó cũng không liên quan tới việc ứng dụng đó có đang chạy nền hay không.

Trong những lần cập nhật gần đây, Android đã đủ thông minh để quản lý tác vụ đa nhiệm thay cho người dùng. Vì thế chẳng có lý do gì mà hệ điều hành này để người dùng can thiệp vào quá trình quản lý tác vụ cả. Các tác động của người dùng sẽ chỉ gây những ảnh hưởng xấu đến quá trình tự động hóa quản lý của Android trong công cuộc làm cho hệ thống chạy trơn tru hơn.

Tuy nhiên, các nhà phát triển vẫn có cách để tạo ra các ứng dụng thực thi mã lệnh khi chạy nền trên Android mà không bị chính hệ điều hành này tắt mất. Nguyên do là cũng như iOS, một số lệnh liên quan đến truyền dẫn thông tin dùng cho các dịch vụ định vị hay đồng bộ luôn được phép chạy nền mà không bao giờ bị tắt. Thêm vào đó, các nhà phát triển cũng có thể tạo ra các ứng dụng luôn duy trì chạy nền dưới dạng các Dịch vụ (Service), và vì thế có thể vượt qua được hạn chế bị hệ thống giải phóng khỏi bộ nhớ. Đây là cơ chế đa nhiệm đặc trưng trên các thiết bị Android. Do các tiến trình thông thường sẽ bị hệ thống giải phóng trước các tiến trình Dịch vụ, các nhà phát triển sẽ làm cho hệ thống nhận thấy mức độ quan trọng của một ứng dụng Dịch vụ bằng cách đưa các dịch vụ này từ chạy nền lên chạy chính trên màn hình thông qua các Thông báo (Notification) dưới dạng các biểu tượng trên thanh thông báo. Người dùng có thể thấy các mẹo này trên những ứng dụng như Locale (thông tin về vị trí hiện tại) hay các ứng dụng chơi nhạc.

Ai nắm quyền điều khiển tác vụ đa nhiệm?

Dù là iOS hay Android, người dùng cũng cần hiểu là hệ điều hành sẽ là người quản lý hầu hết các tác vụ đa nhiệm. iOS sẽ không bao giờ cho phép người dùng tự ý can thiệp vào các tác vụ đang chạy. Các tiến trình ở mức Chờ sẽ bị hệ thống tự động tắt khi cần thiết, không phụ thuộc vào việc ứng dụng đó có ở trên thanh quản lý tác vụ hay không.

Android cũng tương tự, hệ điều hành sẽ đóng tất cả các tiến trình khi thấy không cần thiết nữa, tuy nhiên nó “rộng rãi” hơn iOS là cho các nhà phát triển một số cơ hội tạo ra các ứng dụng chạy nền. Theo đó các tiến trình liên quan đến một ứng dụng khi ở chế độ nền vẫn có thể tự do thực thi lệnh, chỉ bị tắt khi hệ thống thấy bộ nhớ đệm bị đầy. Nếu muốn tạo ra các ứng dụng chạy nền hiệu quả hơn, các nhà phát triển cũng có thể viết các ứng dụng có dùng các lệnh liên quan đến truyền dẫn thông tin (BroadcastReceiver) hay các ứng dụng dưới dạng các Dịch vụ. Và mặc dù giao diện Android 4.0 cho phép người dùng xem hay thêm bớt danh sách các ứng dụng vừa chạy, điều đó cũng không có nghĩa là người dùng có thể kiểm soát các tác vụ đa nhiệm này. Công việc này vẫn sẽ do hệ điều hành tự quyết định.

Tuy nhiên, người dùng cũng không nên quá lo lắng về điều này. Các ứng dụng chạy nền dù là trên iOS hay Android cũng đều được hệ điều hành quản lý theo cách thức hiệu quả nhất. Cả hai nền tảng này sẽ tự biết cách cho phép ứng dụng nào chạy hay tự tắt các tiến trình không cần thiết, và việc người dùng có thêm hay xóa các ứng dụng trên thanh quản lý tác vụ hầu như chả có ích gì ngoài mang lại một chút yên tâm cho mình.

Không có nhận xét nào:

Đăng nhận xét