Các điều nên nhớ về Activity trong Android

Trong lập trình android, activity là một khái niệm rất quan trọng mà người lập trình luôn cần nắm rất vững để đảm bảo các vấn đề sau:

  1. Không bị crash khi người dùng nhận cuộc gọi hay switch sang app khác.
  2. Không dùng resource của máy khi người dùng ko dùng đến.
  3. Không làm mất progress của người dùng khi họ rời app và trở lại sau.
  4. Không crash hay mất progress của người dùng khi họ chuyển hướng device.

Do đã có rất nhiều bài giới thiệu về activity của android trong viblo, nên mình chỉ giới thiệu sơ qua với mục tiêu giúp các bạn nắm được những điều cơ bản nhất:

Hình ảnh về vòng đời của activity trong android basic-lifecycle.png

Nguồn: https://developer.android.com/training/basics/activity-lifecycle/starting.html

Các điều cần nhớ:

  1. Trạng thái Activity
  • Active (hoạt động): Đứng đầu trong thứ tự Activity, người dùng có thể nhìn thấy, được tập trung vào, và là Activity mặt nổi (foreground) có thể nhận tương tác (input) từ người dùng. Android runtime sẽ ngừng các activity có ưu tiên thấp hơn để giúp activity active được hoạt động. Khi có một activity khác chuyển trạng thái thành active, activity này sẽ chuyển sang trạng thái paused.
  • Paused (tạmg ngừng): Trong 1 số trường hợp, loại activity này có thể nhìn thấy được nhưng sẽ không được tập trung vào. Activity có trạng thái này khi có một Activity khác ở dạng trong suốt hay không hiện đầy đủ màn hình được active trên nó. Khi chuyển sang trạng thái paused, activity sẽ được coi như là đang active nhưng không nhận được tương tác (input) từ người dùng. Ở một số trường hợp hy hữu, activity ở trạng thái paused sẽ bị ngưng để lấy thêm nguồn chạy ứng dụng. Khi activity trạng thái paused hoàn toàn bị che khuất, nó sẽ chuyển sang dạng stopped.
  • Stopped (dừng lại): Nếu activity không thể nhìn thấy, nó sẽ chuyển sang dạng stopped. Activity dạng này vẫn được giữ trong memory và ghi nhớ tất cả thông tin trạng thái nhưng sẽ là một ứng viên có thể xoá khi hệ thống cần nhiều bộ nhớ. Khi ở trạng thái stopped, cần thiết phải lưu giữ lại dữ liệu và trạng thái UI hiện tại và dừng tất cả các vận hành không quan trọng. Khi một activity thoát hoặc đóng, nó sẽ chuyển dạng thành inactive.
  • Inactive (không hoạt động): Activity kiểu này nằm giữa khoảng cách của bị xoá và được mở lên. Nó bị xoá khỏi thứ tự Activity và cần được khởi động lại trước khi có thể hiện lên và sử dụng.
  • Sự chuyển giao giữa các trạng thái không được định nghĩa trước mà nó sẽ bị điều khiển bởi hệ thống quản lý bộ nhớ Android. Android sẽ bắt đầu bằng việc đóng các ứng dụng chứa các Activity inactive, rồi sau đó là các Activity stopped. Trong các trường hợp hy hữu, thậm chí có thể xoá các Activity paused.
  • Để có thể viết các dòng code hiệu quả, cần tránh tạo ra các object ngắn hạn.
  1. Các ứng dụng android không điều khiển quá trình vòng đời của chúng mà android thời gian chạy (runtime) sẽ quản lý quá trình của từng ứng dụng và bởi phần mở rộng (extension) của các Activity trong nó.
  2. Trạng thái của Activity giúp xác định được độ ưu tiên của ứng dụng.
  3. Thứ tự của các Activity (Activity Stacks) theo quy luật Vào cuối Ra đầu (Last in First out).