首页 > 解决方案 > Android:在特定日期或日期重复的定期工作管理器

问题描述

我想构建一个在特定时间向用户发送通知的工作管理器。重复标准如下:

我怎样才能做到这一点?

标签: androidkotlinandroid-workmanagerreminders

解决方案


无法设置准确的时间,因此不可能进行定期工作。您必须每次重新计算:

通过使用“ setInitialDelay ”来做这样的事情:

fun  setupWork(){
        if (isCountLimitReached()) {
            return
        }
        
        val workRequest: WorkRequest =
                OneTimeWorkRequestBuilder<MyWork>()
                        .setInitialDelay(getNextInterval(),TimeUnit.MILLISECONDS)
                        .build()
        updateCount()
        WorkManager
                .getInstance(context)
                // Make sure you have only one work like that.
                .enqueueUniqueWork(
                        "MY_WORK_UNIQUE_NAME",
                        // If there is existing work like this - replace it.
                        ExistingWorkPolicy.REPLACE,
                        workRequest
                )
    }

    fun getNextInterval(): Long {
        TODO("Get milliseconds from 'execution date' and subtract 'now'")
    }
    
    private fun updateCount(){
        TODO("Use SharedPreferences or something like this")
    }
    
    private fun isCountLimitReached(): Boolean {
        TODO("Use SharedPreferences or something like this")
    }

推荐阅读