问题标签 [lifecycleowner]

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 回答
144 浏览

android - Android - 在什么情况下/用例我想实现一个自定义 LifecycleOwner

https://developer.android.com/topic/libraries/architecture/lifecycle#implementing-lco

文档说Fragments and Activities in Support Library 26.1.0 and later already implement the LifecycleOwner interface.如果我们可以使用 Activity 或 Fragment 的 LifecycleOwner 来注册 LiveData 对象或让它调用我们注释的方法,这将非常有用

在我们的自定义类中。

但我们也可以选择实现自定义 LifecycleOwner。在什么情况下有一个自定义 LifecycleOwner 是有意义的,考虑到它会使事情复杂化,因为现在我们必须手动跟踪生命周期事件,例如:

?

0 投票
1 回答
378 浏览

android - Fragment 中的观察者有效,但在 Activity 中无效

我在 Fragment 中创建了一个完美工作的观察者(当 Int 增加时它会触发祝酒词),但是当我尝试将此代码移动到活动中时,观察者似乎没有连接,并且当 LiveData 更改时它不会更新.

片段(这有效!):

活动(当我将观察者放在活动中时它没有!):

ViewModel(都在 VM 中调用相同的函数):

回购(从 VM 调用):

每次登录尝试时都会增加 loginAttempt.value,并且我已经验证了这在 Logcat 中有效。

有关信息,makeToast 只是一个创建合理 Toast(文本和位置)的函数:

我假设它与 lifeCycleOwner 有关,但我不知所措!

0 投票
0 回答
720 浏览

android - getLifecycle() 在 ComponentActivity 的构造函数中返回 null。请确保您正在懒惰地构建您的生命周期

我收到此错误“原因:java.lang.IllegalStateException:getLifecycle() 在 ComponentActivity 的构造函数中返回 null。请确保您正在懒惰地构建您的生命周期”

改变后

来自 Place Play 服务实施“com.google.android.gms:play-services-places:16.0.0”

新 Places SDK 客户端实现“com.google.android.libraries.places:places:2.1.0”

0 投票
2 回答
1318 浏览

android - java.lang.IllegalStateException:pb 在 TopHeadlinesFragment 处不能为空?

我正在开发新闻应用程序,我已经实现了带有进度条的 livedata,但我的代码中出现了以下异常

在我的 TopHeadlinesFragment.kt 类下面

在 fragment_top_headlines.xml 下面

我遵循了所有 stackoverflow 的建议,但它并没有解决我的问题。我想知道我到底在哪里犯了错误,为了避免异常,我必须做什么。

我试过的

1.使缓存重新启动无效 2.清理并重建项目 3.我检查了进度条已经初始化。4.我也试过这个stackoverflow链接Android:Progressbar must not be null using Kotlin 5.我试过声明为全局变量的进度条它不起作用

在我的 MainViewModel.kt 下面

我也尝试过以下提供的答案,但没有解决问题

0 投票
0 回答
312 浏览

android - LifecycleObserver doesn't call onPause event on custom View - Android

I am trying to implement LifecycleObserver on a custom RelativeLayout View. I am able to get the ON_RESUME event but for some reason the ON_PAUSE or ON_DESTROY event doesn't get triggered.

What am I missing?

0 投票
1 回答
947 浏览

android-studio - ViewModel 中的生命周期所有者 - Android Studio

我正在尝试在应用程序中实现 ViewModel,该应用程序使用 FirestorepagingAdapter 从 Firestore 获取一些数据,并将其显示在 recyclerview 中。我已经获取所有数据并显示它,但仍然没有使用 ViewModel,它都在 MainActivity

我正在尝试将创建 Firestorepagingoptions 的代码移动到视图模型,并在我的 MainActivity 中,只需创建适配器并设置为 recyclerview。但是 FirestorePagingOptions.Builder 需要设置一个 LifecycleOwner 而我不知道如何在我的 ViewModel 中获取它,或者我根本不应该在 ViewModel 上这样做,我对这些 ViewModel 很迷茫,所以如果有人有任何建议,我将不胜感激。非常感谢。

这是我在 MainActivity 上的原始代码(尚未更改以从 Viewmodel 获取数据)

还有我的 ViewModel 上的代码

0 投票
3 回答
1673 浏览

android - 从 Fragment 返回时,Kotlin ViewModel onchange 被多次调用(使用生命周期实现)

我正在使用 MVVM 架构。

编码

当我单击一个按钮时,会触发orderAction方法。它只是发布一个枚举(将添加进一步的逻辑)。

视图模型

片段观察 LiveData obj 并调用打开新片段的方法。我在这里使用导航器,但我认为有关它的详细信息在这种情况下没有用处。请注意,我正在使用viewLifecycleOwner

分段

问题

当我关闭打开的片段(使用 findNavController().navigateUp())时,会立即调用 DashboardFragment 的 Observe.onChanged 并再次打开片段。

我已经检查了这个问题并尝试了上述链接中提出的所有解决方案(如您在注释代码中所见)。只有这个解决方案有效,但它不是很优雅,并迫使我每次都进行检查。

我想尝试一个更可靠和最优的解决方案。

请记住,在该线程中没有生命周期实现。

0 投票
0 回答
424 浏览

android - 安卓工作管理器

我无法弄清楚如何使用 Android 的 Workmanager。本质上,我想发出一个带有时间延迟的 OneTime 请求,确定成功,然后做一些事情。工人阶级什么都不做。

我期待的是延迟后返回的成功代码。也就是说,我的 Workmanager 代码的唯一目的是提供延迟。

我知道还有许多其他方法可以影响延迟,但我的理解是,Android 比 AlarmManager 更好地“保护” Workmanager Workers。

不幸的是,我做不到。

这是我所做的

  1. 扩展我的活动以包括 LifecycleOwner
  2. 添加了所需的getLifeCycle方法,如下

    /li>
  3. 这是工人阶级

    /li>
  4. 这是我的操作代码

    /li>

我尝试了许多变体,但都没有成功。上面的代码导致堆栈溢出崩溃。帮助!

0 投票
0 回答
93 浏览

android - ViewModelProvider 嵌套片段无法接收数据

下面是我的应用程序的结构

如果需要,应用程序流会在下方直观地显示。

在此处输入图像描述

描述:我有 DataViewModel,它允许我的应用程序将数据从 MainActivity 和不同的 Fragment 发送到另一个 Fragment 或子 Fragment。

在我的 DataViewModel 中,我有两个数据需要发送到 viewpager 内视图中的 CanvasView(扩展视图)。第一个数据来自 MainActivity(传感器数据),另一个数据来自 HomeFragment(状态数据)到 viewPager 内的视图。<viewpager 中的每一个<view 中的 CanvasView< 接收来自 Mainactivty 和 HomeFragment 的数据。这些视图接收基于哪个视图对用户可见的数据。(我只是检查 viewpager 的当前位置并将位置发送到这些 CanvasView 内的 viewmodel 观察者并接收数据)。

问题:当我第一次启动应用程序时,我在 firstViewFragment 上收到了数据,但是当我滑动时,我无法再在这些 CanvasView 的观察者中收到数据,除了最后一个。无论我滑动多少次,最后一个总是接收数据,但以前的视图停止接收数据。

0 投票
1 回答
557 浏览

java - 尝试使用已破坏的生命周期创建 LifecycleCamera

我正在尝试为我的屏幕录像机应用程序制作浮动cameraview。

FloatingViewService.java

layout_floating_widget.xml

BackgroundService.java检查下面的代码我如何调用 FloatingViewService.java

错误:

注意 :此代码作为单独的模块工作,但是当我连接到屏幕录像机时它不起作用,我已经在 manifests.xml 中设置了所有必要的权限和服务