问题标签 [android-architecture-lifecycle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 安卓 MVVM。生命周期感知模型是代码味道还是适当的设计?
对于我的活动,我需要知道手机的连接状态。由于这是我的 UI 需要响应的数据,因此它属于MVVM的模型领域(如果您不同意,请告诉我)。
为了在不需要时不执行代码,我的模型代码目前正在通过实现订阅电话连接更改onCreate()
和注销onDestroy()
LifecycleObserver
为此,我在 Activity 代码中使用 viewModel 实例化并连接我的模型。
怎么感觉都不对。
在理想情况下,Activity 将是 View 层(MVVM 中的 V)的一部分,并且应该只知道 viewModel,但在上述情况下,生命周期感知使 Activity 也知道 Model。
那么,生命周期感知模型是一个合适的概念吗?还是我应该重新考虑设计?
android - 事件包装器模式是否取代了 SingleLiveEvent 的使用?
我最近在我的 Android 应用程序中采用了 MVVM。为了解决应用程序生命周期的潜在问题,谷歌发布了 LiveData。
LiveData 的使用有不同的场景,正如Jose Alcérreca 撰写的中篇文章所指出的,您可以使用 SingleLiveEvent 或类似事件包装器模式的东西。
我想确保SingleLiveEvent或事件包装器模式,这是在 Android MVVM 架构中与 LiveData 一起使用的最佳实践。而且我发现今年(2018 年)的Google I/O 应用程序没有使用SingleLiveEvent,而是使用事件包装器模式。
之前我在项目android-architecture上开了一个issue,起初我正在寻求官方回复,但似乎根本没有任何评论。因此,我想听听已经使用这些东西的开发人员的建议并对此进行反思。
请分享您的宝贵经验,在此先感谢您。
android - 从 View 观察 LiveData 实例
我创建了一个 ViewGroup,它根据 LiveData 实例的状态更新其内容,但是我不知道在视图中观察 LiveData 实例是否会导致一些问题?
这是我正在使用的代码,它在onDestroyView
被调用时删除了观察者。
该视图根据从 LiveData 接收到的状态显示错误、加载或内容视图,在 XML 中我可以像这样使用它:
这样我就可以重用这个已经有动画、加载和错误视图的布局,而无需在活动或片段中复制代码。但是我有一个关于通过视图观察 LiveData 的问题,我认为这样做是安全的,因为当视图被破坏时它会自行移除,但是我可能会错过这样做的其他含义。
android-architecture-components - 强制分页库数据源刷新
在我的 ViewModel 中,我使用
哪个工作正常。但是,当我的数据更改时,LiveData<PagedList<Notification>>
不会收到通知。我可以做些什么来触发LiveData
刷新(ViewModel
知道何时发生更改)。
android-fragments - 我应该在两个片段之间共享我的 ViewModel 吗?
我正在尝试遵循 Android 最佳实践并使用最新推荐的架构组件。到目前为止,您可以在这里看到我的尝试:https ://github.com/randroid88/TodayILearned
目前该应用程序的功能非常有限。
- 它有一个 Room db 用于本地存储日记帐分录。
- 一个片段HomeFragment列出了所有条目
- 另一个片段EntryEditorFragment用于创建新条目。
- 一个 ViewModel, EntryViewModel,它通过存储库更新数据。
问题是现在只有 HomeFragment 可以访问 EntryViewModel。
因此,在我当前的设计中,我通过参数包(使用新导航架构组件中的 SafeArgs)将新条目文本从 EntryEditorFragment 传递给 HomeFragment ,然后 HomeFragment 通过 EntryViewModel 创建新条目:
这感觉不对。
如果 EntryViewModel 也可以访问 EntryEditorFragment 会更好吗?
为了做到这一点,我是否必须将 ViewModel 限定为 Activity,如本博客中所述?
这里的最佳做法是什么?
android - android.arch.lifecycle:extensions:1.1.1 目录
我正在尝试向我的项目添加生命周期:扩展,但它显示错误
网络上提供的所有解决方案都对我没有帮助。我的问题不是关于如何解决错误。检查 sdk 不同的目录后,我注意到以下目录中有一个目录,其中包含许多 Java 类:
我的问题是,从存储库成功下载“extensions-1.1.1.aar”后,它(aar 文件)将保存在哪个目录中?哪些文件将与 .aar 文件一起下载(例如 .pom/.pom.sha1 ...)?谢谢。
android - 在 APK META-INF/android.arch.lifecycle_runtime.version 中复制的重复文件
构建我的 APK 时出现以下错误。
app build.gradle中添加的依赖如下
android - 传递给 singleArgViewModelFactory 时 ::MainViewModel 是什么意思
在 kotlin coroutines 实验室示例中, https: //codelabs.developers.google.com/codelabs/kotlin-coroutines/#6
它通过传递MainViewModel.FACTORY(repository)
MainViewModel 如下,不明白里面::MainViewModel
用了什么语法
singleArgViewModelFactory
has 构造函数:
哪个取一个函数(A) -> T
,里面的那个是什么::MainViewModel
意思 singleArgViewModelFactory(::MainViewModel)
?
android - 仅当 minifyEnabled 和 LifeCycle v 2.1.0 时应用程序在创建 ViewModel 时崩溃
LinkageError
使用创建视图模型时,我的应用程序在启动时崩溃lazy{}
。崩溃仅在以下情况下发生:
minifyEnabled
true
在 build.gradle 中设置为,并且- 我用版本。2.1.0的生命周期组件。它适用于
lifecycle-2.0.0
withminifyEnabled
此外,崩溃仅发生在其中一个视图模型上。在此之前触摸的同一活动中的其他视图模型不会使应用程序崩溃。
崩溃发生在这里的第二行:
是SearchStateViewModel
:
SearchStack
只是一个 ArrayList:
并且SearchState
是一个数据类:
堆栈跟踪:
标记为 (1) 的行是发生崩溃的 ViewModel 的延迟创建。
标记为 (2) 的行是发起延迟创建的 ViewModel 的第一次访问: