问题标签 [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.

0 投票
2 回答
1947 浏览

android - 由于缺少方法而导致发布前报告失败(在 com.google.android.apps.mtaas.crawler-1/base.apk 中)

从最近开始,我的应用开始在预发布报告中包含奇怪的错误消息(上传到 Play 商店后自动生成)。

这些报告包含以下例外情况:

和:

和:

奇怪的是,我发布的应用程序似乎在真实设备上运行良好(异常仅在发布前测试期间出现)。

我试图恢复自上次构建以来执行的所有(主要)更改,其中我没有预发布问题:从 API 26 回到 API 27,支持库的旧版本,没有 D8 等,但到目前为止没有成功:在执行的 9 个测试中,只有 1 或 2 个成功,其余的则因此类错误而失败。

我能做些什么来解决这个问题?

0 投票
1 回答
215 浏览

android - 具有数据绑定的 Android 架构组件

在最佳实践段落中处理生命周期页面上的 Android 架构组件文档中,写道:

使用数据绑定来维护视图和 UI 控制器之间的干净接口。

有人可以为我提供有关如何一起使用这些库的示例的链接吗?

0 投票
1 回答
146 浏览

android - 请在使用“第一次离线方法”时解释 android 架构。

我的应用架构,很常见:

在此处输入图像描述

如果我有实体列表,请解释我,例如

图片说明:

目前我做(根据上图):

  1. mLiveData从存储库获取LiveData
  2. 打回来refreshFromDataBase()
  3. mLiveData.addSource来自LiveData数据库 - 是什么导致 Android 视图快速更新
  4. 打回来refreshFromNetwork()
  5. 休息更新数据库表
  6. 数据库插入导致 LiveData 添加将更改推送到视图

问题的形成

5 步的最佳实践是什么 - 当新数据出现而我必须用最新数据替换旧数据时?

目前我正在使用 RxJava、Room、Kotlin,并且我在第 3 步中使用了嵌套的 Rx.Single,这是非常难看的意大利面条代码。

喜欢

丑陋的意大利面条代码。

问题

  • 我应该在插入新项目之前擦除所有表格吗?Livedata 监听 List 的变化,所以每当有任何变化(一些项目更新,一些插入,一些删除)视图都会更新
  • 在我所有的 Streams 都是 Single 的情况下(原因:它们在 onComplete 时自行处理),如何按顺序链接它们以限制一个流规则?
0 投票
1 回答
396 浏览

android - ViewModels 的自定义半通用工厂

我正在尝试创建一个通用的 ViewModelProvider.Factory 来实例化我的 ViewModel

这些是我的捆绑包:

这些是我使用自定义 ViewModel 扩展的基本 ViewModel:

以及从其中之一扩展的 ViewModel 示例:

我的问题是

不会找到任何构造函数和这条线

出现在日志中

这是我在堆栈跟踪中得到的:

这是没有构造函数的 Kotlin 问题吗?我该如何解决?

0 投票
2 回答
6696 浏览

android - 无法解决:android.arch.persistence.room:runtime: 1.0.0-alpha1

我无法编译以下内容gradle:-

错误信息 :-

在文件中显示 在项目结构中显示dialog

如果有人可以在这里循环并帮助我,那将是有帮助的!

0 投票
7 回答
10950 浏览

android - 如何在后台线程上执行 LiveData 转换?

我需要将对象返回的一种类型的数据转换为后台线程上的LiveData另一种形式,以防止 UI 滞后。

在我的具体情况下,我有:

  • MyDBRowlong对象(由原始s 和s组成的 POJO String);
  • 一个Room DAO实例通过LiveData<List<MyDBRow>>; 和
  • 期望更丰富对象的 UI (将原语膨胀为例如日期/时间对象MyRichObject的 POJO )

所以我需要将我LiveData<List<MyDBRow>>的转换成一个LiveData<List<MyRichObject>>,但不是在 UI 线程上

Transformations.map(LiveData<X>, Function<X, Y>)方法执行此需要的转换,但我不能使用它,因为它在主线程上执行转换

将主线程上的给定函数应用于 LiveData 发出的每个值source并返回 LiveData,它会发出结果值。

给定的函数func将在主线程上执行。

什么是进行LiveData转换的干净方法:

  1. 在主线程之外的某个地方,并且
  2. 仅在需要时(即仅在观察预期转换时)?
0 投票
2 回答
4070 浏览

android - Android LiveData - 第二次更新时不会触发 switchMap

我有一个LiveData依赖于另一个的对象LiveData。据我了解,Transformations.switchMap应该允许链接它们。但是switchMap处理程序仅触发一次,并且不会对进一步的更新做出反应。相反,如果我observe在第一个对象上使用,当它准备好时,检索第二个,它工作正常,但在这种情况下,我必须在Activity而不是ViewModel. 是否可以链接LiveData对象,例如Transformations.switchMap,但接收所有更新,而不仅仅是第一个?

这是一个尝试使用switchMap

这是一种observe活动中的方法(有效,但需要保持活动中的逻辑):

0 投票
3 回答
6023 浏览

android - AndroidViewModel - 进行重复调用不会在观察函数中返回数据

我的问题与ViewModel 第二次返回 nullobserve有关,如果我重复调用服务器,我不会在函数中获得回调。以下是我正在使用的代码 -

在 Activity 中,ViewModel 定义如下 -

observeViewModel函数用于添加 observable on ViewModel

在上面的函数中取消注释以下行允许回调每次都来,但必须有一个正确的方法来做到这一点。

请注意:- 我不需要 RxJava 实现来实现它。

0 投票
1 回答
1542 浏览

android - 无法解析所有文件以进行配置

我刚刚Android Architecture Library在我的 Android 项目中实现了,当我构建应用程序 gradle 模块时一切正常,但我无法在物理/模拟器设备上测试它,这显示在消息 gradle build

错误:无法解析配置“:app:debugAnnotationProcessorClasspath”的所有文件。

无法解析 android.arch.lifecycle:compiler:1.0.0。要求:project :app 没有 android.arch.lifecycle:compiler:1.0.0 的缓存版本可用于离线模式。没有缓存版本的 android.arch.lifecycle:compiler:1.0.0 可用于离线模式。没有缓存版本的 android.arch.lifecycle:compiler:1.0.0 可用于离线模式。没有缓存版本的 android.arch.lifecycle:compiler:1.0.0 可用于离线模式。没有缓存版本的 android.arch.lifecycle:compiler:1.0.0 可用于离线模式。

我已经在设置中取消了我的离线模式,并且已经取消了省电模式。

请帮帮我。

0 投票
1 回答
1318 浏览

android - 当应用程序后台运行时,我的 mvvm、livedata 应用程序是否应该取消网络请求?

使用 Google 的 mvvm 架构组件Github 浏览器示例作为参考,如何取消托管视图模型、观察实时数据、改造网络请求?:)

也许我读错了,但是如果网络条件很差并且请求需要例如 30 秒,则应该取消每个请求,否则如果应用程序快速打开和关闭,可能会启动许多请求。一个设计良好的应用程序将如何处理这个问题?

我认为可以通过在此处覆盖 onInactive来访问删除 livedata 观察者时的回调。我可以尝试在此处取消所有通话,但是如果我出于某种原因不想取消某些通话怎么办?

我猜当您点击返回按钮时,Facebook 不会取消尝试加载您的提要。