我在Android LiveData 文档中阅读了以下内容:
您可以使用 observeForever(Observer) 方法注册一个没有关联 LifecycleOwner 对象的观察者。在这种情况下,观察者被视为始终处于活动状态,因此始终会收到有关修改的通知。您可以调用 removeObserver(Observer) 方法删除这些观察者。
我正在使用 MVVM 架构模式构建一个应用程序,使用ViewModel并在我的 ViewModel 类中声明 LiveDatas。在我的 viewModel 中,我将 aobserveForever设置为 LiveData:
val password by lazy {
MutableLiveData<String>()
}
init {
initObservable()
}
private fun initObservable() {
password.observeForever {
...
}
}
Run Code Online (Sandbox Code Playgroud)
根据我从文档中的理解,每次实例化 ViewModel 的视图(使用前面的代码)被销毁时,我都应该删除观察者,对吗?但是一旦视图被销毁,观察者不应该被销毁(因为 ViewModel 实例在视图中被实例化并且也会被销毁)?
我正在尝试以我的设备语言显示格式化的日期,但它一直以英语显示(即使设备设置为葡萄牙语)。
在我的 ViewController 我创建了一个日期:
let todaysDate: Date = Date()
Run Code Online (Sandbox Code Playgroud)
我调用这个函数(它是 Date 的扩展):
func getFullDate() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy"
dateFormatter.calendar = Calendar.current
dateFormatter.locale = Locale.current
return dateFormatter.string(from: self)
}
Run Code Online (Sandbox Code Playgroud)
输出始终为英文:
08 March 2019
Run Code Online (Sandbox Code Playgroud)
我还检查了终端中的 Locale.current 是否正确,我得到:
? en_BR (current)
Run Code Online (Sandbox Code Playgroud)
我不想定义硬编码的语言,因为我想支持其他语言,但它不起作用。你能给我一些关于如何解决这个问题的提示吗?
目前,我正在一个使用环氧树脂的项目中工作,并且很难思考如何使用它创建UI /集成测试。在Epoxy github的存储库中,我仅获得有关测试RecyclerView的提示,但我认为这不是最好的方法。
你能给我一些提示吗?
谢谢 :)