【问题标题】:instant app base feature's Application.onCreate() never called即时应用基础功能的 Application.onCreate() 从未调用过
【发布时间】:2017-09-22 01:01:44
【问题描述】:

基本上我有一个用 Kotlin 和 Dagger2 编写的项目。我正在尝试实现一项基本功能。大多数示例没有指定<application android:name=".MyApplication" .... >。我需要使用 Application 对象从 MyApplication.onCreate() 调用 android Injector,但从我的调试器中我从未看到 MyApplication 对象被调用。因此,我的活动无法注入对象。

我尝试使用 tools:replace 来使用另一个 Application 对象,但仍然没有成功 (Separate manifest for instant app)。

请帮忙。

【问题讨论】:

标签: android android-instant-apps


【解决方案1】:

Android Studio 调试器可能会遗漏一些在应用生命周期早期发生的事情——我们正在努力解决这个问题。

我尝试创建一个 MyApplication,它只在 onCreate() 中记录一些内容,并且显示了日志语句。

【讨论】:

  • 是的,Application.onCreate() 被调用,但不知何故我们正在使用最新的 Android 架构组件问题。当它尝试 registerActivityLifecycleCallbacks() 时,activity.getApplication() 返回 null Application 对象。我在有和没有特定应用程序类的情况下都试过了。
【解决方案2】:

在导致(Android 架构组件相关)问题的根中 Google 开发人员的帮助下,该问题现已解决。有关详细信息,请参阅issue 65989760。 - 活动的构造函数无法获取应用程序对象。它必须在activity.onCreate() 上完成。 - 因此,我将声明为 Kotlin var 的逻辑移至 onCreate() 并解决了问题。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    viewModel.orderHistoryLiveData.observe(this, Observer {
        viewModel.listVisible.set(it?.isNotEmpty() ?: false)
    })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多