1. Lifecycle
2. ViewModel
3. Compose
import androidx.lifecycle.ViewModel
class CounterViewModel : ViewModel() {
private var count = 0
fun getCount(): Int {
return count
}
fun incrementCount() {
count++
}
}
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.compose.viewModel
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val viewModel = ViewModelProvider(this).get(CounterViewModel::class.java)
setContent {
val count = remember { mutableStateOf(viewModel.getCount()) }
Column {
Text(text = "Count: ${count.value}")
Button(onClick = {
viewModel.incrementCount()
count.value = viewModel.getCount()
}) {
Text(text = "Increment")
}
}
}
}
}
groovy
dependencies {
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
implementation 'androidx.activity:activity-compose:1.4.0'
implementation 'androidx.compose.runtime:runtime:1.1.0'
implementation 'androidx.compose.ui:ui-tooling-runtime:1.1.0'
}