Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用刀柄注射狼人:无法实例化狼人_Android_Android Workmanager_Dagger Hilt - Fatal编程技术网

Android 用刀柄注射狼人:无法实例化狼人

Android 用刀柄注射狼人:无法实例化狼人,android,android-workmanager,dagger-hilt,Android,Android Workmanager,Dagger Hilt,同样的问题也被问到了,但它们对我不起作用,一开始我使用的是最新版本的work manager,它是2.7 alpha 3,但我降级了,因为它只兼容android 12预览sdk,错误仍然存在 它无法实例化worker,因为这些依赖项包含在worker的构造函数中,在我添加它们之前它已经工作了,但是如果我不能添加它们,hilt没有任何好处,因此情况如下: 清单不包含任何与work manager相关的配置 应用程序类别: @HiltAndroidApp class TimelineApp : Ap

同样的问题也被问到了,但它们对我不起作用,一开始我使用的是最新版本的work manager,它是2.7 alpha 3,但我降级了,因为它只兼容android 12预览sdk,错误仍然存在
它无法实例化worker,因为这些依赖项包含在worker的构造函数中,在我添加它们之前它已经工作了,但是如果我不能添加它们,hilt没有任何好处,因此情况如下:

清单不包含任何与work manager相关的配置

应用程序类别:

@HiltAndroidApp
class TimelineApp : Application() ,Configuration.Provider{

@Inject
lateinit var workerFactory: HiltWorkerFactory

override fun getWorkManagerConfiguration() =
    Configuration.Builder()
        .setWorkerFactory(workerFactory)
        .build()

}
工人:

@HiltWorker
class DriveSyncWorker @AssistedInject constructor(
    @Assisted val context: Context,
    @Assisted workerParams: WorkerParameters,
    val dependency: StorageHelper,
)
注意:它不使用希尔特工厂

错误:

E/WM-WorkerFactory: Could not instantiate com.wakaztahir.timeline.utils.workers.DriveSyncWorker
    java.lang.NoSuchMethodException: com.wakaztahir.timeline.utils.workers.DriveSyncWorker.<init> [class android.content.Context, class androidx.work.WorkerParameters]
        at java.lang.Class.getConstructor0(Class.java:2332)
        at java.lang.Class.getDeclaredConstructor(Class.java:2170)
        at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:95)
        at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:244)
        at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:136)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:923)
E/WM-WorkerWrapper: Could not create Worker com.wakaztahir.timeline.utils.workers.DriveSyncWorker
链接:



由于您使用的是高于2.6.0-alpha01的工作管理器版本,高于2.6.0-alpha01的工作管理器版本使用启动初始值设定项

将此提供程序添加到您的应用程序
AndroidManifest.xml

<application ... >

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

</application>


但是您正在从应用程序重写
getWorkManagerConfiguration
(因为Hilt需要它),因此您需要将该提供程序添加到清单中。我这样做了,它仍然会给出错误!文档中写道:注意:由于这会自定义WorkManager配置,因此还必须从AndroidManifest.xml文件中删除WorkManager文档中指定的默认初始值设定项。谢谢你的帮助!
<application ... >

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

</application>