One feature we love about Kotlin is that nullability is baked into its type system — when declaring a reference, you say upfront whether it can hold null values. In this post, we’ll look at how the Android 11 SDK does more to expose nullability information in its APIs and show how you can prepare your Kotlin code for it.
To protect user data and reduce the amount of space consumed by apps, Android 10 introduced changes to the behavior of the external storage permission. Android 11 Developer Preview continues this effort while adding improvements designed to help developers adapt to the changes.
In development, as in life, we know it’s important to avoid doing more work than needed as it can waste memory and energy. This principle applies to coroutines as well. You need to make sure that you control the life of the coroutine and cancel it when it’s no longer needed — this is what structured concurrency represents. Read on to find out the ins and outs of coroutine cancellation.
We waxed poetic about the heuristics the system uses to kill tasks, doze mode and how the system tries to save battery, TrimMemory requests, JobScheduler (the underlying platform facility used by WorkManager), AppStandby buckets, and more.
Provides APIs for Session Initiation Protocol (SIP) tasks, such as initiating SIP connections, and provides access to related SIP services. This class is the starting point for any SIP actions. You can acquire an instance of it with newInstance().
Web scraping or crawling is the act of fetching data from a third party website by downloading and parsing the HTML code to extract the data you want. It can be done manually, but generally this term refers to the automated process of downloading the HTML content of a page, parsing/extracting the data, and saving it into a database for further analysis or use.