Android LifeCycle: ViewModels, Translucent Activities và Launch Modes
Bài đăng này đã không được cập nhật trong 5 năm
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
All rights reserved