【问题标题】:ProcessLifecycleOwner is not giving lifecycle callback in Application classProcessLifecycleOwner 没有在 Application 类中提供生命周期回调
【发布时间】:2022-10-20 14:11:05
【问题描述】:

我在我的应用程序类中使用ProcessLifecycleOwner.get().lifecycle.addObserver(this),我希望得到onStateChanged() 回调被调用,但是我在我的清单中添加了一个提供程序来禁用WorkManager 的标准自动初始化。

 <provider
  android:name="androidx.startup.InitializationProvider"
  android:authorities="${applicationId}.androidx-startup"
  tools:node="remove">
 </provider>

从 SO 中列出的其他几个解决方案中,我对提供程序进行了如下修改

我可以看到第一个带有事件ON_CREATEonStateChanged() 回调,然后应用程序立即崩溃。崩溃日志如下

Caused by: java.lang.IllegalStateException: WorkManager is already initialized. Did you try to initialize it manually without disabling WorkManagerInitializer

有没有人做过这样的事情,建议任何工作方法?

【问题讨论】:

    标签: android android-contentprovider android-lifecycle android-workmanager


    【解决方案1】:

    您可能已经在 Android 清单中初始化了一个 Workermanager。

    <!-- disable default provider -->
               <provider
                android:name="androidx.work.impl.WorkManagerInitializer"
                android:authorities="${applicationId}.workmanager-init"
                tools:node="remove" />
    

    编号:Custom initialization of Workmanager

    【讨论】:

    • 是的,我正在禁用清单中的工作管理器自动初始化,如问题中所述,我们不能一起处理它吗? @Narendra_Nath
    【解决方案2】:

    我找到了解决方案,我创建了另一个包 androix/lifecycle 并添加了一个新类并初始化了 ProcessLifeCycleOwner 如下

    
    fun initialize(context: Application): LifecycleOwner {
            LifecycleDispatcher.init(context)
            ProcessLifecycleOwner.init(context)
            return ProcessLifecycleOwner.get()
        }
    

    这很完美

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多