当前位置: 首页 > 知识库问答 >
问题:

WorkManager:如何在同一应用程序中设置不同的WorkManager配置

郝峰
2023-03-14
      public Configuration getWorkManagerConfiguration() {
        return new Configuration.Builder()
            .setMinimumLoggingLevel(android.util.Log.INFO)
            .build();
      }

它不使用自定义工厂。并且已经有几个其他模块(对于其他特性来说是gradle模块)正在使用WorkManger而不使用Factory。现在,如果我更改这个配置并添加一个工厂,它可能会破坏其他几个地方的work manager设置。我是否可以只对模块中的WorkManager类使用工厂(或者只有一些WorkManager类应该通过工厂初始化,其他的使用默认配置)。有可能吗?希望我的问题清楚了。

共有1个答案

冯胤
2023-03-14

您可以使用DelegatingWorkerFactory并将您是自定义WorkerFactory添加到其中。

您的自定义WorkerFactory将需要检查传递给工厂的类名是否是它想要处理的类名,如果不是,只需返回nullDelegatingWorkerFactory将使用反射恢复到默认的工作工厂。

请记住,每次初始化WorkManager时都需要添加自定义WorkerFactory。如果您不这样做,而WorkManager试图为您的Worker(通常由自定义WorkerFactory处理)完全填充一个工作请求,它将回退到默认的WorkerFactory并失败(可能出现类未找到的异常)。

class ConferenceDataWorkerFactory(
    private val refreshEventDataUseCase: RefreshConferenceDataUseCase
) : WorkerFactory() {

    override fun createWorker(
        appContext: Context,
        workerClassName: String,
        workerParameters: WorkerParameters
    ): ListenableWorker? {

        return when (workerClassName) {
            ConferenceDataWorker::class.java.name ->
                ConferenceDataWorker(appContext, workerParameters, refreshEventDataUseCase)
            else ->
                // Return null, so that the base class can delegate to the default WorkerFactory.
                null
        }
    }
}
 类似资料:
  • 我的目标是每12小时更新一次我的应用令牌(使用网络请求),无论应用程序是在后台还是被杀死,所以我使用workmanager来解决这个问题。但周期性任务仅在应用程序处于后台或打开状态时有效,但当我杀死应用程序时,周期性任务停止以更新我的应用程序令牌。 这是我的代码: 我正在使用workmanager 2.4.0版本

  • 问题内容: 我已经使用spring-data使用spring boot分别配置了neo4j和cassandra存储库。但是,当我尝试在同一项目中使用两个存储库时,它无法按预期工作。 这是我的文件夹结构。 ----- org.test.project 请注意,所有存储库都通过相应的DAO扩展了相应的spring-datapository。 当我使用此配置运行时,会出现以下错误。 我尝试更改存储库名称

  • 我正在尝试使用WorkManager每10秒运行一个简单的工作。当应用程序在后台或前台运行时,它可以完美地工作。当我关闭应用程序(杀死应用程序)时,工作将不再被调用。 我在创建MainActivity时调用以下代码 工人阶级 这些代码在我的应用程序未关闭时运行良好。 我如何让它运行,即使应用程序关闭?

  • 我需要每X分钟从服务器同步一次数据,即使在关闭应用程序之后也是如此。我使用WorkManger和PeriodicWorkRequest每X分钟触发一次。这是每X分钟触发一次,即使我们关闭了应用程序。退出应用程序后我面临的问题是如何访问静态类或变量? 示例代码: 同步类。反恐精英: 常数。反恐精英: 当应用程序处于前台和后台状态,但由于DependencyService类为null而在终止状态下失败

  • 我有一个带有多个WebAPI的Spring Boot应用程序。如何通过应用程序属性以不同的方式配置每个WebAPI的路径前缀? 例如,我有一个UserRestController和一个StarShipRestController。两者都是不同WebAPI的一部分,但由同一个Spring Boot App提供服务。RestController应该只包含资源URL的最后一部分。路径前缀不应该是Rest