Loading Now

Vòng đời (Kotlin Lifecycle) trong Kotlin và cách sử dụng hiệu quả

kotlin lifecycle

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:

image-1 Vòng đời (Kotlin Lifecycle) trong Kotlin và cách sử dụng hiệu quả
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 sau onStop() 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ếnHậu quả
Không huỷ đăng ký listener/timerRò rỉ bộ nhớ (memory leak)
Cập nhật UI khi Fragment đã huỷỨng dụng crash
Không sử dụng Lifecycle-aware APIsLogic 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

Bạn có thể đã bỏ qua