Dagger2服务中的RuntimeException AndroidInjection.inject是什么意思?

4

我有一个服务正在使用dagger2 v2.27,在谷歌play商店控制台中,我遇到了以下崩溃(但在Firebase控制台中没有这种崩溃)

Caused by: java.lang.RuntimeException: at dagger.android.AndroidInjection.inject (AndroidInjection.java:124)
at app.ui.main.ServiceNotificationListener.onCreate (ServiceNotificationListener.java:34) at android.app.ActivityThread.handleCreateService (ActivityThread.java:3758)

我正在使用继承自Android NotificationListenerService 的服务,在onCreate中我有以下代码:

 override fun onCreate() {
        AndroidInjection.inject(this) // line 34
}

主应用程序:

    class MainApplication : Application(), HasAndroidInjector {
    
     override fun onCreate() {
            super.onCreate()
     DaggerAppComponent
                .builder()
                .application(this)
                .build()
                .inject(this)
    }
}

AndroidManifest.xml 文件中。
   <application
        android:hardwareAccelerated = "true"
        android:name=".ui.MainApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar.NoStatusBar">

我无法重现错误,我读到关于应用程序为空的问题,但不确定如何解决我的服务问题(依赖于NotificationListener)非常感谢。


你看过这个链接了吗? - Blackbelt
2个回答

0
我写了一篇文章,关于这个bug。除非你知道实际问题,否则很难追踪或重现,甚至更难调试。这是一个恶魔般的bug,已知至少曾让一名工程师走到了疯狂的边缘。这篇文章详细介绍了实际问题。
TL;DR - 只需设置android:allowBackup=false,就可以解决崩溃问题。

....

我现在需要另一杯啤酒来淹没这个错误的记忆。

0
如果可能的话,请分享在NotificationListenerService中使用的代码。由于它是一个服务,我更喜欢将其注入到Dagger模块类中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接