The Android Lifecycle cheat sheet - Phần 3: Fragments
Bài đăng này đã không được cập nhật trong 6 năm
Trong loạt bài:
Phần 1: Activities - Single activity lifecycle
Phần 2: Multiple Activities - Navigation and Backstack
Phần 3: Fragments - Vòng đời Activity và Fragment (Bài này)
Trong phần này, tôi sẽ đề cập đến hành vi của một Fragment được gắn với một Activity. Đừng nhầm lẫn kịch bản này với một Fragment được thêm vào backstack (xem Tasks và Backstack để biết thêm thông tin về các fragment transactions và backstack).
Kịch bản 1: Activity với Fragment bắt đầu và kết thúc
Lưu ý đảm bảo rằng onCreate của Activity được thực thi trước của Fragment. Tuy nhiên, callback hiển thị cạnh nhau - chẳng hạn như onStart và onResume dược thực hiện song song và do đó có thể được gọi theo thứ tự. Ví dụ hệ thống có thể thực thi hàm onStart của Activity trước hàm onStart của Fragment, nhưng sau đó thực thi hàm onResume của Fragment trước hàm onResume của Activity.
Kịch bản 2: Activity với Fragment bị rotated
Quản lý trạng thái
Trạng thái Fragment được lưu và phục hồi theo kiểu rất giống với trạng thái của Activity. Sự khác biệt là không có onRestoreInstanceState trong Fragment, nhưng Bundle thì có trong onCreate, onCreateView và onActivityCreated của Fragment
Fragments có thể được giữ lại, có nghĩa là cùng 1 instance được sử dụng khi cấu hình thay đổi. Như kịch bản tiếp theo cho thấy, điều này thay đổi sơ đồ một chút.
Fragments - Kịch bản 3: Acitivity với Fragment được giữ lại bị rotated
Fragment không bị destroyed cũng không được tạo ra sau khi rotated vì cùng một instance fragment được sử dụng sau khi Activity được tạo lại. Trạng thái Bundle vẫn có sẵn trong onActivityCreated.
Không nên sử dụng các Fragment được giữ lại trừ khi chúng được sử dụng để lưu trữ giữ liệu qua các thay đổi cấu hình (Trong một Fragment không có UI). Đây là lớp ViewModel từ thư viện Architecture Components sử dụng nội bộ, nhưng với một API đơn giảm hơn
All rights reserved