问题标签 [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 投票
1 回答
1138 浏览

android - 有没有办法使用 Android 的 LifecycleObserver 来通知 onActivityResult?

我目前LifecycleObserver用于通知事件,例如onStart我的视图。这对于作为演示者或处理程序的组件非常有用,例如FacebookLoginHandler一旦视图准备好就需要注册回调。但是,正如我所提到的,在某些情况下,我希望我的处理程序处理另一个活动的返回数据。

例子:

当我选择使用 Facebook 登录时,它会启动另一个活动,并将其返回到 view 的onActivityResult方法。这让我FacebookLoginHandler在视图中注入我的,只是为了将处理委托给它。我想用它LifecycleObserver来获得通知onActivityResult并避免将我的处理程序耦合到视图仅用于委派此事件。有没有办法做到这一点?

0 投票
1 回答
2156 浏览

android - 如何为 ViewPager 中的每个页面创建一个 ViewModel?

我有一个ViewPager,我在其中显示PetFragment. 要创建 a 的新实例PetFragment,我调用PetFragment.newInstance(petId).

我想为每个单独的ViewModel实例petId。但ViewModelProvider.Factory#create()只接受 aClass<T>作为参数。我如何实现这一目标?

0 投票
2 回答
936 浏览

android - Android Lifecycle ViewModel 在横向模式下锁定和解锁后不持久

我有一个非常简单的应用程序,其中包含一个虚拟Activity和虚拟的 Android Lifecycle ViewModel ViewModel

片段活动

视图模型

视图模型工厂

显现

杀死 ViewModel 的步骤

  1. 将应用设置为横向模式
  2. 锁定屏幕
  3. 解锁屏幕并观察 ViewModel 消失了,Activity 被销毁并创建了两次。

日志输出

此行为与此处的发现一致,但是,我希望 arch 库能够处理这种情况,因为它非常标准,并且纵向模式下的锁定和解锁按预期工作。

在这种特殊情况下防止它ViewModel被破坏有什么好主意吗?

在 Nexus 5X、API 27 上测试

编辑 1:在添加要保存的字符串onSaveInstanceState并检查该字符串是否在所有活动破坏和创建中持续存在之后,我很确定这是库的错误。

编辑2:为什么这是一个问题?

问题 1:在横向锁定的情况下,捆绑包以某种方式从 Activity 244798673 正确路由到 Activity 218111434 02-20 16:30:33.241,但是ViewModel无法通过这一系列操作持续存在。这与捆绑行为不一致,因为我们在技术上仍然在同一个 Activity 范围内。

问题2:竖屏锁定和解锁的日志输出:

ViewModel在纵向锁定和解锁中持续存在,这与横向场景不一致。

0 投票
2 回答
1020 浏览

android - 为什么我会得到“多个 dex 文件定义 Landroid/support/v7/recyclerview/extensions/ListAdapter”

我得到了可怕的java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex错误。堆栈跟踪将根本原因显示为:

根本原因是什么?

0 投票
0 回答
1375 浏览

android - Live Data Observer - 等待 RESUMED 状态

这是我的场景:

  1. 用户按下按钮
  2. 播放长慢动画
  3. 播放动画时 - 用户按下主页按钮并转到主屏幕
  4. 动画在后台完成并设置实时数据值
  5. 当应用程序恢复时,实时数据的观察者会收到通知并执行片段事务。
  6. 由于 Live Data 源代码中的以下行,通知在 onStart 期间发生:

    static boolean isActiveState(State state) {return state.isAtLeast(STARTED);}

所以问题是我怎样才能让观察者等到至少恢复状态。当活动完全恢复时,需要进行片段事务。

0 投票
1 回答
354 浏览

android - Not able to get the LifeCycle ViewModel Class Using ViewModelProvider

I am trying to get the ViewModel Class for the specific fragment. But ViewModelProvider.of(this).get(UserListViewModel.class) does not work for me. Extending my Fragment from "android.support.v4.app.Fragment", but still it does not work. Here is the code

0 投票
2 回答
1639 浏览

android - 在 Android 架构组件 1.1.1 中找不到类 DiffCallback:

最近我在 gradle 文件中更新了 android.arch 支持库版本

现在我说得到这个错误

在此处输入图像描述

0 投票
0 回答
72 浏览

android - Android架构组件 - 启动相机意图时防止@OnLifecycleEvent

我实现了 2 个 LifecycleEvents Lifecycle.Event.ON_PAUSE 和 Lifecycle.Event.ON_START 现在每当我启动相机 Intent 时都会触发它们(这在某种程度上是合乎逻辑的)。有什么办法可以防止这种情况发生吗?

0 投票
1 回答
741 浏览

android - 尝试在空对象引用上调用虚拟方法“boolean androidx.work.State.isFinished()”

我正在尝试使用 codeLab 文档学习 WorkManager for Android。当我尝试测试 beginUniqueWork( Ensure Unique Work )的功能时,我的应用程序崩溃了

我只是通过多次选择图像来实现 beginUniqueWork 和测试应用程序。

我在 ViewModel 类的 aplyBlur() 中编写的代码是:

0 投票
1 回答
2624 浏览

android - 过滤由视图模型的 LiveData 条目填充的回收器视图

我正在使用架构组件视图模型的 LiveData 来填充回收器视图,并希望添加一个 searchview 过滤器,但找不到任何解决方案。我尝试在适配器中使用可过滤接口,但它也不起作用,可能是因为视图模型不允许它改变。

我的适配器是-

}

搜索视图 OnQueryTextListener 为 -