标签: android-architecture

事件包装器模式是否取代了 SingleLiveEvent 的使用?

我最近在我的 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

5
推荐指数
1
解决办法
1436
查看次数

Android多模块架构:领域取决于数据,反之亦然

一些Android多模块架构示例表明领域层依赖于数据。其他人则相反。

\n

Android 开发者网站说:

\n
\n

领域层是位于 UI 层和数据层之间的可选层。

\n
\n

它还显示了域依赖于数据的图片:\n域取决于数据

\n

与此同时,proandroiddev.com 上的另一篇文章说:

\n

1.

\n
\n

域层\xc2\xa0是洋葱的最内部部分(与其他层没有依赖关系),它包含\xc2\xa0实体、用例和存储库接口。\xc2\xa0用例组合来自1个或多个存储库接口的数据。

\n
\n
    \n
  1. \n
\n
\n

最常见的错误之一是让您的应用程序由数据层/特定数据系统驱动。

\n
\n
    \n
  1. \n
\n
\n

域层不依赖于数据层。

\n
\n

并显示适当的图像:\n在此输入图像描述

\n

那么您能否描述一下哪种方法更适合 Android 多模块?为什么?

\n

architecture android clean-architecture android-architecture android-multi-module

5
推荐指数
1
解决办法
438
查看次数

视图是否可以从MVVM中的ViewModel请求数据?

我一直在阅读有关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

4
推荐指数
1
解决办法
1149
查看次数

LiveData.addSource onChanged事件未调用Android

我正在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

2
推荐指数
1
解决办法
1327
查看次数

目前,数据绑定不适用于非基本功能模块.请将数据绑定代码移动到基本功能模块

我正在关注谷歌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 android-instant-apps android-architecture

1
推荐指数
1
解决办法
1300
查看次数