Android LifeCycle: ViewModels, Translucent Activities và Launch Modes

I) ViewModels

Vòng đời của ViewModel khá là đơn giản, chúng chỉ có một callback duy nhất đó là onCleared. Tuy nhiên có 1 sự khác biệt giữa scope của thằng này đến một activity hoặc đến một fragment:

ViewModel với chức năng chính của nó dùng trong việc lưu trữ và đảm bảo tính toàn vẹn của dữ liệu. Nhìn vào sơ đồ trên chúng ta có thể thấy được ViewModel vẫn còn tồn tại sau khi người dùng đã xoay màn hình thiết bị, điều này rất thuận lợi cho việc update lại UI sau khi activity hoặc fragment được khởi tạo lại. Về chi tiết của thằng ViewModel này các bạn có thể tham khảo ở các bài viết khác.

II) Translucent Activities

Các translucent activity thường có background trong suốt, để người dùng có thể nhìn thấy những gì xảy ra bên dưới.

Sau khi thuộc tính android:windowIsTranslucent được đươc thêm vào theme của một activity, diagram sau đây sẽ có 1 vài sự thay đổi: Đó là background activity không bao giờ gọi hàm onStop mà chỉ gọi hàm onPause, vậy nên nó vẫn có thể tiếp tục trong việc update UI.

Ngoài ra khi quay trở lại 1 task (trở lại app), cả 2 activity đồng thời sẽ restored và started và chỉ có translucent activity được resumed.

III) Launch Modes

Về cơ bản, cách đề xuất để xử lý các tasks và backstack đó là: đừng , thay vào đó chúng ta nên sử dùng các behavior mặc định. Để biết thêm chi tiết hơn, các bạn có thể tham khảo topic sau: Tasks và BackStack . Nếu bạn thực sự cần sử dụng SINGLE_TOP, diagram của nó như sau:

Single Top Behavior

Để so sánh với SingleTop, chúng ta có thể nhìn vào diagram của SingleTask để thấy nó có gì khác biệt

IV) Tổng kết

Nguồn tham khảo: https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-iv-49946659b094