使用 hilt 在 @HiltWorker 中进行字段注入

时间:2021-03-10 07:16:27

标签: android android-workmanager dagger-hilt

我需要在@HiltWorker 中实现字段注入,但字段注入返回 null。这是我的工作代码。

import owid-covid-data.csv

keep if iso_code=="GBR"
keep date new_cases
gen date2 = date(date, "YMD")
format date2 %td

tsset date2 // Set data to time series format 
tssmooth ma ma7=new_cases, window(6 1 0) // create the 7 day moving-average

twoway (bar  new_cases  date2) (line  ma7 date2) 

这是我的自定义工作管理器配置

@HiltWorker
public class BackgroundTasks extends Worker {

@Inject
SessionManager sessionManager;


@AssistedInject
public BackgroundTasks(@Assisted @NonNull Context context, @Assisted @NonNull WorkerParameters params) {
    super(context, params);
}

@NonNull
@Override
public Result doWork() {
    Timber.tag("TAGGGGGGG").i(sessionManager.getJwtModel().getUserName());
    return Result.success();
 }
}

这是我的清单文件,我将在其中删除工作管理器默认配置

Configuration myConfig = new Configuration.Builder()
            .setMinimumLoggingLevel(android.util.Log.INFO)
            .build();

WorkManager.initialize(this, myConfig);

我希望,这是足够的信息来理解我的场景。如果有人需要,请追问。 谢谢

1 个答案:

答案 0 :(得分:0)

WorkManager 应该由 Hilt 初始化。所以你不应该这样做

WorkManager.initialize(this, myConfig);

相反,您的 Application 类设置如下。

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

  @Inject lateinit var workerFactory: HiltWorkerFactory

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

here所述。