Vòng đời (Kotlin Lifecycle) trong Kotlin và cách sử dụng hiệu quả
Trong Android, mỗi Activity
hoặc Fragment
đều trải qua một chuỗi trạng thái trong quá trình hoạt động. Những trạng thái này được gọi là vòng đời (lifecycle). Việc hiểu rõ vòng đời giúp lập trình viên quản lý tài nguyên hiệu quả, tránh rò rỉ bộ nhớ và đảm bảo ứng dụng vận hành ổn định.
Vòng đời của Activity
Dưới đây là các phương thức cơ bản trong vòng đời của một Activity:

override fun onCreate(savedInstanceState: Bundle?) { }
override fun onStart() { }
override fun onResume() { }
override fun onPause() { }
override fun onStop() { }
override fun onRestart() { }
override fun onDestroy() { }
Mô tả chức năng:
onCreate()
: Khởi tạo Activity, thiết lập giao diện và dữ liệu.onStart()
: Activity bắt đầu hiển thị trên màn hình.onResume()
: Activity đang tương tác với người dùng.onPause()
: Activity mất focus, thường do một Activity khác xuất hiện.onStop()
: Activity không còn hiển thị.onRestart()
: Được gọi sauonStop()
nếu người dùng quay lại.onDestroy()
: Activity bị huỷ và giải phóng tài nguyên.
Vòng đời của Fragment
Fragment có vòng đời phức tạp hơn vì phụ thuộc vào Activity chứa nó. Một số phương thức phổ biến:
override fun onAttach(context: Context) { }
override fun onCreateView(...) : View? { }
override fun onViewCreated(...) { }
override fun onStart() { }
override fun onResume() { }
override fun onPause() { }
override fun onStop() { }
override fun onDestroyView() { }
override fun onDetach() { }
Trong đó, onDestroyView()
được gọi khi View bị huỷ, nhưng Fragment vẫn còn tồn tại trong bộ nhớ.
Sử dụng LifecycleObserver
Để tách logic khỏi Activity hoặc Fragment, bạn có thể sử dụng LifecycleObserver
từ Jetpack Lifecycle:
class MyObserver : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStartEvent() {
Log.d("Observer", "Started")
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStopEvent() {
Log.d("Observer", "Stopped")
}
}
Gắn Observer vào Activity:
lifecycle.addObserver(MyObserver())
Kết hợp Coroutine với LifecycleScope
Khi sử dụng Kotlin Coroutine trong Activity hoặc Fragment, bạn nên dùng lifecycleScope
để đảm bảo các coroutine tự động huỷ khi vòng đời kết thúc:
lifecycleScope.launch {
fetchData()
}
Từ API 31 trở lên, có thể dùng repeatOnLifecycle()
để kiểm soát chặt hơn trạng thái thực thi.
Những sai lầm thường gặp
Lỗi phổ biến | Hậu quả |
---|---|
Không huỷ đăng ký listener/timer | Rò rỉ bộ nhớ (memory leak) |
Cập nhật UI khi Fragment đã huỷ | Ứng dụng crash |
Không sử dụng Lifecycle-aware APIs | Logic khó kiểm soát và dễ bị lỗi |
Kết luận
Việc hiểu rõ vòng đời trong Kotlin Android là kỹ năng quan trọng đối với lập trình viên Android. Nó giúp quản lý tài nguyên hiệu quả, tránh lỗi và làm cho ứng dụng ổn định hơn.
Bạn có thể tìm hiểu thêm về Lifecycle từ tài liệu chính thức của Android tại: developer.android.com/guide/components/activities/activity-lifecycle
Ngoài ra, để tìm hiểu về Lifecycle-aware components và coroutine, bạn có thể tham khảo: developer.android.com/topic/libraries/architecture/lifecycle
Xem thêm:
Vòng đời Component trong React: Class và Functional Component
Clean Code trong lập trình là gì? Cách viết code sạch và dễ hiểu
Share this content:
Post Comment