Description
Library for using Crontab-like syntax in scheduling of some Kotlin Coroutines tasks to do from time to time
krontab alternatives and similar libraries
Based on the "Multiplatform" category.
Alternatively, view krontab alternatives based on common mentions on social networks and blogs.
-
kotlin-multiplatform-bignum
A Kotlin multiplatform library for arbitrary precision arithmetics -
Kotlin Spotify Web API
Spotify Web API wrapper for Kotlin, Java, JS, and Native - Targets JVM, Android, JS (browser), Native (Desktop), and Apple tvOS/iOS. Includes a Spotify Web Playback SDK wrapper for Kotlin/JS, and a spotify-auth wrapper for Kotlin/Android. -
NoCopy Compiler Plugin
A Kotlin compiler plugin that removes the `copy` method of data classes. -
NonEmptyCollections
A type-safe implementation for collections that cannot be empty. Life is too short for emptiness-checks!
Appwrite - The Open Source Firebase alternative introduces iOS support
Do you think we are missing an alternative of krontab or a related project?
README
krontab
Library was created to give oppotunity to launch some things from time to time according to some schedule in runtime of applications.
Table of content |
---|
How to use |
How to use: Including in project |
How to use: Config from string |
How to use: Config via builder (DSL preview) |
How to use: KronScheduler as a Flow |
How to use
There are several ways to configure and use this library:
- From some string
- From builder
Anyway, to start some action from time to time you will need to use one of extensions/functions:
val kronScheduler = /* creating of KronScheduler instance */;
kronScheuler.doWhile {
// some action
true // true - repeat on next time
}
Including in project
If you want to include krontab
in your project, just add next line to your
dependencies part:
implementation "com.insanusmokrassar:krontab:$krontab_version"
Next version is the latest currently for the library:
For old version of Gradle, instead of implementation
word developers must use compile
.
Config from string
Developers can use more simple way to configure repeat times is string. String configuring
like a crontab
, but with a little bit different meanings:
/-------- Seconds
| /------ Minutes
| | /---- Hours
| | | /-- Days of months
| | | | / Months
| | | | |
* * * * *
It is different with original crontab
syntax for the reason, that expected that in practice developers
will use seconds and minutes with more probability than months (for example). In fact, developers will use something
like:
doWhile("/5 * * * *") {
println("Called")
true // true - repeat on next time
}
Or more version:
doInfinity("/5 * * * *") {
println("Called")
}
Both of examples will print Called
message every five seconds.
Config via builder
Also this library currently supports DSL for creating the same goals:
val kronScheduler = buildSchedule {
seconds {
from (0) every 5
}
}
kronScheduler.doWhile {
println("Called")
true // true - repeat on next time
}
Or
val kronScheduler = buildSchedule {
seconds {
0 every 5
}
}
kronScheduler.doWhile {
println("Called")
true // true - repeat on next time
}
Or
val kronScheduler = buildSchedule {
seconds {
0 every 5
}
}
kronScheduler.doInfinity {
println("Called")
}
All of these examples will do the same things: print Called
message every five seconds.
KronScheduler as a Flow
Any KronScheduler
can e converted to a Flow<DateTime
using extension asFlow
:
val kronScheduler = buildSchedule {
seconds {
0 every 1
}
}
val flow = kronScheduler.asFlow()
So, in this case any operations related to flow are available and it is expected that they will work correctly. For
example, it is possible to use this flow with takeWhile
:
flow.takeWhile {
condition()
}.collect {
action()
}