android / android-ktx

A set of Kotlin extensions for Android app development.
https://android.github.io/android-ktx/core-ktx/
7.47k stars 563 forks source link

JobScheduler helper function #554

Open RamV13 opened 6 years ago

RamV13 commented 6 years ago

I'd like to propose a helper function for the JobScheduler API which is fairly cumbersome in Kotlin right now even with current KTX features. The signature of the function would be something like

inline fun scheduleJob(context: Context, jobId: Int, componentName: ComponentName, buildSequence: JobInfo.Builder.() -> Unit)

Before

val builder = JobInfo.Builder(jobId++, serviceComponent)

if (wiFiConnectivityRadioButton.isChecked) {
    builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
} else if (anyConnectivityRadioButton.isChecked) {
    builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
}

systemService<JobScheduler>().schedule(builder.build())

After

scheduleJob(this, jobId++, serviceComponent) {
    if (wiFiConnectivityRadioButton.isChecked) {
        setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    } else if (anyConnectivityRadioButton.isChecked) {
        setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
    }
}

Please let me know if this sounds like a good idea and I'll get a PR ready!

* code snippet adapted from Google Samples

romainguy commented 6 years ago

Looks like a good idea to me!