Posted by Alice Yuan – Developer Relations Engineer, in collaboration with Software program Engineers – Matthew Valgenti and Emma Li – at Google
What’s consumer initiated information switch?
In Android 14 we launched user-initiated information switch jobs, or UIDT. You should utilize the brand new API setUserInitiated in JobScheduler to specify that the job is a user-initiated information switch job. This API is useful to be used instances that require long-duration (>10 minutes), user-initiated switch of knowledge over community. UIDT can also be another API to utilizing a dataSync foreground service, which has new timeout behavior for apps that target Android 15.
UIDT is meant to assist consumer initiated use instances reminiscent of downloading recordsdata from a distant server, importing recordsdata to a distant server or transferring information between two units through Wi-Fi transport. Because the launch of Android 14, the brand new API has been adopted by a rising variety of Android apps working on a whole lot of tens of millions of consumer units.
What are the advantages if I undertake user-initiated information switch?
The Android staff’s in depth evaluation discovered gaps in foreground providers and WorkManager for lengthy period, consumer initiated information transfers. Though WorkManager may assist retries and constraints, it couldn’t assist lengthy period work which are sometimes obligatory for information switch operations. Builders additionally discovered it difficult to make use of foreground service, which didn’t present a great consumer expertise throughout interruption of community connectivity.
JobScheduler’s consumer initiated information switch API helps resolve for these gaps by providing builders the next advantages:
- Lengthy period, speedy background work execution that isn’t impacted by present job quotas based mostly on app standby buckets.
- Helps enhance consistency in API conduct throughout all units, and the conduct is enforced by Compatibility Test Suite (CTS).
- Improved reliability of knowledge switch in comparison with utilizing a foreground service as indicated by Google Maps personal benchmarks.
- Help for execution when sure constraints are met, reminiscent of working solely on Wi-Fi or solely when the machine is charging.
- Gracefully manages job timeouts and retries.
- Decreased reminiscence utilization and lowered notification litter when the app is ready for constraints to be met.
In case you’re seeking to do quick or interruptible background work, WorkManager continues to be the really useful answer. Take a look at data transfer background task options to be taught extra.
Google Maps efficiently launched UIDT and noticed enchancment in obtain reliability!
Google Maps determined to make use of UIDT for his or her offline maps obtain use case. This use case ensures that customers are in a position to obtain offline maps so that they have map information even after they lose community connectivity.
What was Google Maps’ principal motivation for adopting UIDT?
Google Maps determined to undertake UIDT to make sure that the obtain service works with the most recent Android releases and continues to be dependable and environment friendly.
“We applied a number of options and optimizations, reminiscent of resumable downloads in order that if a consumer’s web connection is interrupted or they exit the app earlier than the obtain is full, the obtain resumes from the place it left off when the consumer returns to the app or their connection is restored.” – Emma Li, Software program Engineer at Google
What’s the set off level to start out UIDT in Google Maps?
The UIDT is triggered when a consumer decides to obtain a map area to have that information offline. When a consumer hits obtain, the UIDT is triggered instantly and processing of the area begins as quickly as potential.
What had been Google Maps’ adoption outcomes?
Google Maps rolled out the undertaking utilizing experiment flags to know metrics impression after every ramp stage.
“We efficiently launched UIDT on Android 14 in early 2024 migrating from our foreground service implementation. After a retroactive evaluation on Android 14 vs Android 13 implementation, we now see a ten%+ enchancment in obtain failure fee of offline downloads!” – Matthew Valgenti, Software program Engineer at Google
How do I get began implementing consumer initiated information switch API?
In an effort to undertake consumer initiated information switch, you will have to combine with the JobScheduler platform API and gate the change to Android 14 or increased.
Take a look at the next developer documentation to get began with consumer initiated information switch:
This weblog publish is a part of our collection: Highlight Week on Android 15, the place we offer assets — weblog posts, movies, pattern code, and extra — all designed that will help you put together your apps and benefit from the most recent options in Android 15. You’ll be able to read more in the overview of Spotlight Week: Android 15, which might be up to date all through the week.