android - 如何在 Viewmodel 中安全地重用相同的对象变量(使用简单的计时器应用程序)?
问题描述
我正在解决 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
}
}
解决方案
您能否分享一下您如何将数据传递给您的视图?此外,您似乎有另一个变量来完成这项任务
model.timerStatus.value = StateTimer.INITIALIZED
我猜这另一行正在影响您显示信息的方式,因为您正在再次初始化同一个实例。
推荐阅读
- ruby-on-rails - 我应该在哪里创建创建后挂钩
- c# - 何时以及如何使用导体
- angular - Angular 9 服务的抽象类需要@injectable 装饰器吗?
- php - php搜索过滤器显示所有行而不过滤
- django - heroku中的Django网站仅在一个特定页面中缺少模板
- c++ - C++ 使用 insert() 在向量开头插入元素
- android - 如何检测用户是否使用 Firebase 动态链接安装了应用程序?
- sql - 如何使用 SMO 对象 (SQL Server) 删除表上的所有约束?
- angular - Ionic 4 离子可选择不显示值
- xslt-3.0 - 转换未完成时访问临时树