作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想创建一个 CountdownTimer
,它将触发更新 UI 的事件(触发弹出窗口、启动动画等)。
我想知道如何清理,这是我的假设和原因:
EventCountdownTimer
。然后我可以受益于 LifecycleObserver
的使用,但我想知道如何将信息传回 Activity (我尝试扩展 CountdownTimer
并在 Activity 中使用它,但我有一个错误,无法编译)Activity
本身中,它是最简单的,但我不确定它是否属于那里,因为它不是 UI 组件,而且我无法使 LifecycleObserver
受益ViewModel
中。我认为因为它与 Activity 相关并且 CountdownTimer
是一种逻辑数据,它应该放在这里,但这也意味着要观察 Activity 的生命周期,并持有任何与 Activity
相关的ViewModel
中的字段是不好的做法。您认为最好的选择是什么?为什么?
最佳答案
在 MVVM 模式中,您可以在 ViewModel 中观察到一个 LiveData,UI 会观察到它,并且在值发生变化时,您会相应地更新 UI。可观察值如何改变值,这是您的业务逻辑,所有这些逻辑都应该在您的 ViewModel 中或单独的组件中,ViewModel 将使用这些组件来更新可观察状态。
这将允许您将 UI 与业务逻辑分开,作为您可观察到的业务逻辑,作为两者之间的通信桥梁,而 ViewModel 对 UI 中发生的事情一无所知。简而言之,它只执行它被告知要执行的内容并更新正在观察的变量,然后在 UI 中发生的事情是 UI 的责任,这样您就可以清楚地分离关注点。
关于android - CountDownTimer : In Activity, ViewModel 还是单独的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56733261/
我是一名优秀的程序员,十分优秀!