Chúng ta thường nói về việc ứng dụng chạy nền trên Android, nhưng thực sự chúng hoạt động như thế nào? Hãy cùng tìm hiểu về cách Android xử lý các công việc nền của mình.Ứng dụng chạy nền là gì?
Mỗi ứng dụng trên Android đều có một luồng riêng để xử lý giao diện và tương tác người dùng, được gọi là UI Thread.
Nếu UI Thread phải thực hiện quá nhiều công việc, app có thể trở nên chậm và không phản hồi, làm giảm trải nghiệm người dùng. Do đó, các tác vụ mất thời gian nên được thực hiện trong Background Thread.
Background Thread cho phép xử lý các tác vụ nền mà không ảnh hưởng đến trải nghiệm người dùng, như tải dữ liệu hay cập nhật thông tin. Điều này giúp ứng dụng hoạt động mượt mà hơn.Thách thức khi thực hiện các tác vụ nền
+ Liệu ứng dụng cần kiểm soát thời gian của các tác vụ nền hay không? Ví dụ, một ứng dụng nghe nhạc cần bắt đầu phát nhạc khi bạn nhấn play và dừng khi bạn nhấn stop. Trong khi đó, một ứng dụng khác có thể cần thực hiện upload dữ liệu lên máy chủ mỗi giờ mà không cần biết thời gian bắt đầu và kết thúc.
+ Tác vụ nền có thể bị gián đoạn không? Ví dụ, nếu quá trình upload file bị gián đoạn, ứng dụng phải tải lại từ đầu. Lập trình viên có thể muốn Android không ngắt quãng các tác vụ nền của họ cho đến khi hoàn thành.
+ Cần phản hồi ngay khi hoàn thành tác vụ nền hay có thể chạy sau cũng được?
+ Cần thiết lập điều kiện cụ thể cho việc chạy tác vụ nền hay không? Ví dụ, backup ảnh chỉ được thực hiện khi điện thoại đang sạc và kết nối Wi-Fi.
+ Tác vụ cần thu thập dữ liệu nhạy cảm của người dùng, như dữ liệu vị trí hay không?
+ Cần chạy đúng vào thời điểm cụ thể hay không? Ví dụ, ứng dụng lịch cần thông báo về cuộc họp của bạn đúng giờ đã đặt.
Dịch vụ Foreground, WorkManager, AlarmManager, DownloadManager
Với những tác vụ quan trọng cần chạy ngay và không được gián đoạn, lập trình viên Android sử dụng dịch vụ Foreground. Dịch vụ này báo cho hệ thống biết rằng ứng dụng đang thực hiện công việc quan trọng và không được phép bị dừng. Bạn có thể nhìn thấy dịch vụ Foreground thông qua một thông báo hiển thị trong khu vực thông báo, không thể xóa được trừ trên Android 11 trở lên.
Ví dụ của việc sử dụng dịch vụ Foreground: ứng dụng nghe nhạc hiển thị các nút điều khiển cho người dùng sử dụng.
WorkManager là một thư viện lập trình cho các tác vụ có thể chạy sau, không cần phản hồi ngay và có thể chạy sau khi thiết bị Android khởi động lại. WorkManager có thể kích hoạt tác vụ dựa trên điều kiện nhất định mà không cần ứng dụng chạy. WorkManager có khả năng cân bằng tốt tài nguyên của hệ thống và thích hợp cho việc thiết lập các tác vụ lặp lại.
Chạy ẩn
Bây giờ mình sẽ nói về cơ chế chạy nền của các ứng dụng. Còn cơ chế quản lý đa nhiệm của Android thì khác. Sẵn mình sẽ giải thích ngay cho anh em biết nhé.
Mỗi khi bạn mở một ứng dụng, Android sẽ đưa nó vào một 'ngăn xếp ứng dụng'. Mỗi khi mở thêm một ứng dụng khác, nó sẽ nằm trên cùng của ngăn xếp này (gọi là ngăn xếp ngược). Bạn có thể xem ngăn xếp bằng cách nhấn vào nút Ứng dụng gần đây, ứng dụng mới nhất sẽ nằm trên cùng.
Có một số ứng dụng mở nhiều tác vụ khác nhau. Ví dụ, khi bạn sử dụng Gmail, một màn hình có thể hiển thị danh sách email, và khi bạn nhấn vào nút soạn thảo, một màn hình mới sẽ hiện ra. Màn hình soạn thảo cũng sẽ được thêm vào ngăn xếp, nếu bạn nhấn nút trở lại, bạn sẽ quay lại màn hình danh sách email. Nhấn nút trở lại lần nữa, ứng dụng Gmail sẽ đóng và bạn quay lại ứng dụng trước đó bạn đã sử dụng.

Android cũng tự động xóa các ứng dụng mà bạn không sử dụng để giải phóng bộ nhớ. Khi đó, chỉ có hành động đầu tiên của ứng dụng được lưu lại (trong ví dụ của Gmail, màn hình danh sách email là hành động đầu tiên - hoạt động gốc). Nếu bạn đã mở màn hình soạn thảo nhưng không sử dụng, sau một thời gian, khi quay lại ứng dụng Gmail, bạn sẽ quay lại màn hình danh sách email. Đây là hiện tượng 'tải lại' mà chúng ta thường nói đến.
Android làm điều này dựa trên giả định rằng nếu bạn đã mở một màn hình mà đã lâu không sử dụng, có thể bạn đã bỏ nó đi và không sử dụng nữa. Khi quay lại, bạn sẽ bắt đầu lại từ đầu.
Một số ứng dụng có thể được cấu hình để Android luôn giữ trạng thái của chúng ngay cả sau một thời gian dài ở trong ngăn xếp. Một số khác thì luôn tải lại mỗi khi bạn rời khỏi và quay lại ứng dụng. Điều này phụ thuộc vào nhà phát triển của ứng dụng.
Hy vọng qua đây, anh em đã hiểu hơn về cơ chế hoạt động của các ứng dụng Android liên quan đến đa nhiệm và chạy nền. Chúc anh em vui vẻ.
