如何安全地重用Viewmodel中的同一对象变量(在简单的计时器应用程序上工作)?

时间:2019-05-06 18:44:12

标签: android kotlin architecture

我正在研究Android中的一个自行设计的编码问题,我正在构建一个简单的计时器应用程序,该应用程序允许用户倒计时一定的时间。

我有一个活动显示计时器MainActivity(也可以从该活动中启动计时器),还有一个活动允许用户选择倒计时时间并提交(SelectActivity)。

我使用的ViewModel包含定制的CountDownTimer类。用户可以随时返回SelectActivity并提交新时间。在我的代码中,我将计时器显式设置为null,如下所示(不是最好的代码,但我希望这个想法会出现)。我之后添加了model.timer = null

问题:如果用户提交新时间,MainActivity现在将显示2个计数器快速连续倒数(剩余时间显示在一个视图中)。

我的假设是,通过将计时器设置为null可以摆脱旧的计时器。这个假设错了吗?我要完全解决这个问题吗?

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        // Check which request we're responding to
        if (requestCode == 1) {
            // Make sure the request was successful
            model.timer = null
            model.timer = MyTimer(data?.getLongExtra("Message",11) ?: 0, 10, true).apply {
                setListener(model.timerListener)
            }
            model.timerStatus.value = StateTimer.INITIALIZED
        }
    }

1 个答案:

答案 0 :(得分:0)

能否请您分享一下如何将数据传递给视图? 另外,看来您还有另一个用于此任务的变量

model.timerStatus.value = StateTimer.INITIALIZED

我猜这另一行会影响您显示信息的方式,因为您要再次初始化同一实例。