Với mỗi Activity thường vòng đời có 3 trạng thái sau:

Untitled.png

 

1- Running (đang kích hoạt)

 

 

2- Paused (tạm dừng)

3- Stopped (dừng – không phải Destroyed)

1- Running (đang kích hoạt): Khi màn hình là Foreground ( Activity nằm trên cùng ứng dụng và cho phép người sử dụng tương tác)

2- Paused (tạm dừng) : Activity bị mất focus nhưng mà vẫn nhìn thấy được Activity này (Ví dụ bạn mở một Activity mới lên dưới dạng Dialog). Trường hợp này nó vẫn có khả năng bị hệ thống tự động “XỬ” trong tình huống bộ nhớ quá ít.

3- Stopped (dừng – không phải Destroyed): Activity mất focus và không nhìn thấy được (ví dụ bạn mở một Activity mới lên mà Full màn hình chẳng hạn). Trong trường hợp này nó có thể bị hệ thống “Xử” trong bất kỳ tình huống nào.

Như vậy cả Paused hay Stopped đều có khả năng bị Destroyed (hủy) khi bộ nhớ cần cho việc khác ưu tiên hơn.

Các trạng thái của activity qua từng phương thức:

  • onCreate(): activity được khởi tạo
  • onStart(): activity trở thành có thể nhìn thấy.
  • onResume(): activity vẫn có thể nhìn thấy (nhưng có thể quay lại từ trạng thái paused)
  • onPause(): 1 activity che lên 1 phần activity hiện tại.
  • onStop(): activity không còn có thể nhìn thấy.
  • onDestroy(): activity bị hủy bỏ.

Có 3 vòng lặp chính mà bạn cần nắm rõ:

  • Entire lifetime: xảy ra giữa onCreate()onDestroy(). 1 activity sẽ cài đặt các trạng thái trong onCreate() và giải phóng toàn bộ tài nguyên trong onDestroy(). Ví dụ có 1 luồng chạy ngầm tải dữ liệu từ trên mạng, ta có thể tạo luồng tại onCreate() và kết thúc luồng tại onDestroy().
  • Visible lifetime: xảy ra giữa onStart()onStop(). Trong giai đoạn này, người dùng có thể nhìn thấy activity trên màn hình, tuy nhiên nó không ở trên đầu ngăn xếp và không thể tương tác với người dùng. Giữa 2 phương thức này người dùng có thể lưu trữ được tài nguyên cần thiết hiển thị lên activity cho người dùng. Ví dụ ta cần quan sát thay đổi ảnh hưởng tới giao diện, thì ta có thể đặt Broadcast Receiver tại onStart() và loại bỏ tại onStop().
  • Foreground lifetime: xảy ra giữa onResume() onPause(). Trong giai đoạn này activity ở trên đầu ngăn xếp và có thể tương tác với người dùng.

in.png

 

Untitled.png