Napa Ram
08/18/2021, 4:02 AMColton Idle
08/18/2021, 4:28 AMNapa Ram
08/18/2021, 4:31 AMclass MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CountDownAppWithComposeTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.background) {
CountDown()
}
}
}
}
}
@Composable
fun CountDown() {
var nums: String by remember{ mutableStateOf("")}
var setView: String by remember{ mutableStateOf("00:00")}
val countNum = object: CountDownTimer(140000, 1000){
override fun onTick(millisUntilFinished: Long) {
// nums = millisUntilFinished/1000
val minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)
// long seconds = (milliseconds / 1000);
val seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)
val tt = TimeUnit.MINUTES.toSeconds(minutes)
nums = String.format(Locale.ENGLISH,"%02d : %02d",minutes,seconds-tt)
setView = nums
}
override fun onFinish() {
setView = "Finished"
}
}.start()
Column(modifier = Modifier.padding(16.dp), verticalArrangement = Arrangement.Center) {
Text(text = setView, modifier = Modifier.padding(bottom = 8.dp),
style = MaterialTheme.typography.h5)
Button(onClick = { countNum.start() }) {
Text(text = "Start CountDown")
}
}
}
uli
08/18/2021, 6:22 AMcountNum
Napa Ram
08/18/2021, 6:27 AMvar countNum1 : CountDownTimer by remember {mutableStateOf()}
uli
08/18/2021, 7:44 AMval countNum = remember {
object: CountDownTimer(140000, 1000){
...
}.start()
}
No state here. Just a val
that should be remembered instead of being recreated on recompositionuli
08/18/2021, 7:46 AMDisposableEffect
https://jorgecastillo.dev/jetpack-compose-effect-handlers