[kotlin] 액티비티(Activity)를 위한 아키텍처 컴포넌트
안드로이드 앱의 다양한 아키텍처 컴포넌트 중에서, 액티비티(Activity)는 사용자 인터페이스 및 상태 관리의 핵심 요소이다. 이번 블로그에서는 Kotlin을 사용하여 액티비티와 관련된 아키텍처 컴포넌트에 대해 살펴볼 것이다.
목차
액티비티 및 라이프사이클
액티비티의 라이프사이클은 onCreate, onStart, onResume, onPause, onStop, onDestroy 등의 메소드를 통해 관리된다. 라이프사이클 메소드를 활용하여 액티비티의 상태 변화에 따른 작업을 수행할 수 있다.
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 액티비티 초기화 작업 수행
}
override fun onStart() {
super.onStart()
// 액티비티가 화면에 표시될 때 호출되는 작업 수행
}
// 다른 라이프사이클 메소드들에 대한 구현
}
ViewModel
ViewModel은 앱의 UI 관련 데이터를 저장하고 관리하며, 화면 회전과 같은 구성 변경에 의해 데이터를 유지시키는 데 사용된다. ViewModel은 라이프사이클에 대해 알지 못하며, onCleared 메소드를 사용하여 필요한 정리 작업을 수행한다.
class MyViewModel : ViewModel() {
private val data = MutableLiveData<String>()
fun setData(input: String) {
data.value = input
}
fun getData(): LiveData<String> {
return data
}
override fun onCleared() {
// 정리 작업 수행
}
}
LiveData
LiveData는 라이프사이클을 인식하는 데이터 홀더 클래스로, 데이터의 변경 시 관련 구독자에게 알리도록 구성할 수 있다. LiveData를 활용하면 메모리 누수나 Null 값을 방지하고, 데이터 변경 시 화면을 자동으로 갱신할 수 있다.
class MyActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.getData().observe(this, Observer {
// 데이터 변경 시 작업 수행
})
}
}
데이터 바인딩
데이터 바인딩은 인터페이스 구성 요소를 앱의 데이터 소스에 연결하여 화면에 데이터를 표시하는 데 사용된다. **
class MyActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.viewModel = viewModel
binding.lifecycleOwner = this
}
}
위의 내용을 통해, Kotlin을 사용하여 액티비티를 위한 아키텍처 컴포넌트들을 구성하고 활용하는 방법에 대해 살펴보았다.
참고 자료:
- Android Developers - ViewModels and LiveData: Patterns + AntiPatterns
- Android Developers - Create App with Data Binding