|Android WorkManager Stable Release|
|Written by Mike James|
|Wednesday, 06 March 2019|
Jetpack is a collection of libraries that should make Android easier to use. The problem is what to do while they are maturing to a usable state. The good news is that WorkManager is now considered stable.
Android programming is a funny mix of Java programming with lots of extras and alternatives. One of the problems in coping with it is that the API is a huge sprawling mess and finding out what the best way to do something is usually difficult and occasionally impossible. In particular, there are a number of ways of creating a multi-threaded program especially, one that needs to run in the background. At this point you might well say, well yes it's a complicated and sophisticated problem, but as the Android GUI is single-threaded, like most GUIs, it is essential that for all but the simplest app you move to multiple threads. Something so commonplace should not be so hard.
Enter WorkManager 1.0, a solution to nearly all our multi-tasking problems. It is easy to use. Simply create a sub-class of Worker and start customizing it by overriding doWork. You can set constraints on how you want the Worker to be run - power, network availability etc. The ability to specify the conditions needed to run is the biggest simplification. Your instance of Worker will be run automatically and restarted if it has to be suspended for any reason. You can set a one-off request or a periodic scheduling.
You can discover the "company" line from the following promo video which is quite a good introduction to WorkManager:
It is a good introduction, but I'd like to draw your attention to the flow diagram shown briefly early in the video:
Still a bit of a complicated mess, isn't it? And what is worse if you look up Foreground service you will find it even more confusing:
"If you must perform work outside of your main thread, but only while the user is interacting with your application, you should instead create a new thread. For example, if you want to play some music, but only while your activity is running, you might create a thread in
Remember that if you do use a service, it still runs in your application's main thread by default, so you should still create a new thread within the service if it performs intensive or blocking operations."
If you come from a Java background then you might recognize the low-level threading commands but what about the rest? You also now have to throw in Kotlin coroutines as a possible solution.
It is not that I think that WorkManager is a bad thing - it is going to save a lot of boilerplate code and mistakes. What I am complaining about is that you could consider it very late and very little. Android isn't a new platform and you really do get the impression that there is no one in charge.
Oh, for a Benevolent Dictator For Life.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Wednesday, 06 March 2019 )|