[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 {
            // 데이터 변경 시 작업 수행
        })
    }
}

데이터 바인딩

데이터 바인딩은 인터페이스 구성 요소를 앱의 데이터 소스에 연결하여 화면에 데이터를 표시하는 데 사용된다. **** 태그를 이용하여 XML 파일을 데이터 바인딩 레이아웃으로 선언하고, 바인딩 클래스를 활용하여 각 요소에 접근한다.

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을 사용하여 액티비티를 위한 아키텍처 컴포넌트들을 구성하고 활용하는 방법에 대해 살펴보았다.

참고 자료: