Thư viện Lifecycle cung cấp các API tích hợp cho phép bạn tích hợp với Jetpack Compose. Các API chính bao gồm:
- Luồng cho
Lifecycle.State
hiện tại. LifecycleEffects
cho phép bạn chạy một khối dựa trên mộtLifecycle.Event
cụ thể.
Những công cụ tích hợp này cung cấp các hook thuận tiện để quản lý Vòng đời trong hệ phân cấp Compose. Tài liệu này trình bày cách bạn có thể sử dụng những công cụ đó trong ứng dụng của mình.
Thu thập trạng thái vòng đời bằng luồng
Lifecycle hiển thị một thuộc tính currentStateFlow
cung cấp Lifecycle.State
hiện tại dưới dạng StateFlow
Kotlin. Bạn có thể thu thập Flow
này dưới dạng State
. Việc này cho phép ứng dụng của bạn đọc các thay đổi của Lifecycle trong quá trình kết hợp.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
Bạn có thể xem ví dụ trước bằng mô-đun lifecycle-common
. Phương thức currentStateAsState()
có trong mô-đun lifecycle-runtime-compose
, cho phép bạn dễ dàng đọc trạng thái của Vòng đời hiện tại chỉ bằng một dòng. Ví dụ sau minh hoạ việc này:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Chạy mã trên các sự kiện trong vòng đời
Ngoài ra còn có LifecycleEffects
cho phép bạn chạy một khối khi một Lifecycle.Event
cụ thể xảy ra.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
Ngoài LifecycleEventEffect
, bạn cũng có thể dùng LifecycleStartEffect
và LifecycleResumeEffect
. Các API này được liên kết với các sự kiện cụ thể. Chúng cũng cung cấp một khối bổ sung trong khối chính giúp dọn dẹp mọi mã mà sự kiện có thể đã khởi động.
LifecycleStartEffect
LifecycleStartEffect
tương tự như LifecycleEffect
, nhưng chỉ chạy trong các sự kiện Lifecycle.Event.ON_START
. Ứng dụng này cũng chấp nhận các khoá hoạt động như những khoá Compose khác. Khi thay đổi, khoá sẽ kích hoạt khối để chạy lại.
Khi có một sự kiện Lifecycle.Event.ON_STOP
hoặc hiệu ứng thoát khỏi cấu trúc, hệ thống sẽ thực thi một khối onStopOrDispose
. Điều này cho phép dọn dẹp mọi công việc thuộc khối khởi động.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
LifecycleResumeEffect
LifecycleResumeEffect
hoạt động giống như LifecycleStartedEffect
, nhưng thực thi trên sự kiện Lifecycle.Event.ON_RESUME
. Phương thức này cũng cung cấp một khối onPauseOrDispose
để dọn dẹp.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}