我最近在我的 Android 应用程序中采用了 MVVM。为了解决应用生命周期的底层问题,谷歌发布了LiveData。
LiveData 的使用有不同的场景,正如Jose Alcérreca 写的中篇文章所指出的,你可以使用 SingleLiveEvent 或类似事件包装器模式的东西。
我想确保SingleLiveEvent或事件包装器模式,这将是在 Android MVVM 架构中与 LiveData 一起使用的最佳实践。我发现今年(2018 年)的Google I/O 应用程序没有使用SingleLiveEvent,而是使用事件包装器模式。
之前我在android-architecture项目上开了一个issue,一开始我在寻求官方回复,但似乎根本没有任何评论。因此,我想听听已经使用这些东西并对其进行反思的开发人员的建议。
请分享您的宝贵经验,在此先感谢您。
android android-livedata android-architecture-lifecycle android-architecture
一些Android多模块架构示例表明领域层依赖于数据。其他人则相反。
\n\n\n\n\n领域层是位于 UI 层和数据层之间的可选层。
\n
与此同时,proandroiddev.com 上的另一篇文章说:
\n1.
\n\n\n域层\xc2\xa0是洋葱的最内部部分(与其他层没有依赖关系),它包含\xc2\xa0实体、用例和存储库接口。\xc2\xa0用例组合来自1个或多个存储库接口的数据。
\n
\n\n最常见的错误之一是让您的应用程序由数据层/特定数据系统驱动。
\n
\n\n\n域层不依赖于数据层。
\n
那么您能否描述一下哪种方法更适合 Android 多模块?为什么?
\narchitecture android clean-architecture android-architecture android-multi-module
我一直在阅读有关MVVM模式的内容.View我应该观察相应的变化ViewModel并采取相应的行动,但如果View在MVVM架构中使用了以下代码,我会感到困惑.
fun onClick(view:View){
showUser(viewModel.getUserDisplayName())
}
Run Code Online (Sandbox Code Playgroud)
这里View没有观察到变化,而是要求获取最新数据ViewModel.这在MVVM中被认为是正确的吗?
android mvvm android-architecture android-architecture-components
我正在Kotlin中使用Android Archi + Retrofit + RxAndroid。从服务器获得响应时,我需要更新Data对象。但是livedata.addSource的onChanged没有调用。
我正在从Git代码获取帮助:-https: //github.com/shahbazahmed1269/AndroidGithubIssues
这是我在Kotlin中的代码:-
class LoginRepository : BaseRepository() {
fun callLoginApi(data: HashMap<String, String>): LiveData<LoginResponse> {
val liveData: MutableLiveData<LoginResponse> = MutableLiveData<LoginResponse>()
// val call = mApiService.getLoginUser(data)
mApiService.getLoginUser(data)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ user ->
liveData.value = user
Log.e("response", user.toString())
},
{ error ->
liveData.value = LoginResponse(error = error.localizedMessage)
Log.e("Error", error.message)
})
return liveData
}
}
open class LoginViewModel : ViewModel() {
lateinit var loginResponse : MediatorLiveData<LoginResponse>
lateinit var loginRepo:LoginRepository;
init {
loginResponse = MediatorLiveData<LoginResponse>()
loginRepo = LoginRepository() …Run Code Online (Sandbox Code Playgroud) android kotlin rx-android android-architecture android-architecture-components
我正在关注谷歌Codelabs的即时应用程序,我正在尝试创建topeka-ui(一个用于即时应用程序的UI功能模块).
它告诉我为该UI模块启用这样的数据绑定:
当我尝试在android块中启用数据绑定时,我在gradle构建期间得到以下错误.
Error:Currently, data binding does not work for non-base feature modules.
Please, move data binding code to the base feature module.
See https://issuetracker.google.com/63814741 for details
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
android ×5
android-architecture-components ×2
android-architecture-lifecycle ×1
architecture ×1
kotlin ×1
mvvm ×1
rx-android ×1