# android-apps

Published articles for android-apps.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Our Transition to React Native

DevFeed: [Our Transition to React Native](<https://devfeed.tech/articles/our-transition-to-react-native-27402.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/react-native-at-khan.htm>)

Author: Khan Academy

Published: 2020-07-09T22:00:00Z

Content type: opinion

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [architectures](<https://devfeed.tech/tags/architectures.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bridge](<https://devfeed.tech/tags/bridge.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [react-native](<https://devfeed.tech/tags/react-native.md>)

### AI overview

Khan Academy describes completing its transition to React Native for its iOS and Android apps. The article explains why the team moved away from separate platform codebases and outlines the transition's exploration, straddling, and extinction phases.

### Source excerpt

In 2017, Khan Academy started using React Native in our iOS and Android apps. As of this year, we've reached a big milestone: our transition to React Native is complete! Every screen in the app is rendered in React Native.

## Animating between numbers in Jetpack Compose

DevFeed: [Animating between numbers in Jetpack Compose](<https://devfeed.tech/articles/animating-between-numbers-in-jetpack-compose-25182.md>)

Original publisher: [Read original article](<https://joebirch.co/android/animating-between-numbers-in-jetpack-compose/>)

Author: hitherejoe

Published: 2026-09-02T12:37:43Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [API](<https://devfeed.tech/topics/api.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [animation](<https://devfeed.tech/tags/animation.md>), [api](<https://devfeed.tech/tags/api.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [apps](<https://devfeed.tech/tags/apps.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [jetpackcompose](<https://devfeed.tech/tags/jetpackcompose.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to animate changing numerical portfolio values in Jetpack Compose. It uses animateFloatAsState with a target value and a tween animation configured with a 500ms duration and FastOutSlowInEasing.

### Source excerpt

When it comes to displaying portfolio data inside of Sleevd, users can change the selected filters which will adjust the portfolio values based on that selection. Alongside the main graph, we show the total portfolio value along with some small statistics for collection counts. When the user moves between the filter options, the values of... Continue reading ->

## Build intelligent Android apps: Integrate into Android's intelligence system using AppFunctions

DevFeed: [Build intelligent Android apps: Integrate into Android's intelligence system using AppFunctions](<https://devfeed.tech/articles/build-intelligent-android-apps-integrate-into-android-s-intelligence-system-using-appfunctions-22679.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-appfunctions.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-07-21T13:00:00Z

Content type: tutorial

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [User Interfaces](<https://devfeed.tech/topics/user-interfaces.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agentic](<https://devfeed.tech/tags/agentic.md>), [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [apps](<https://devfeed.tech/tags/apps.md>), [code](<https://devfeed.tech/tags/code.md>), [development](<https://devfeed.tech/tags/development.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [user-interfaces](<https://devfeed.tech/tags/user-interfaces.md>)

### AI overview

This tutorial explains how to integrate Android AppFunctions into the JetPacker travel-planning app. It shows how privileged on-device agents can perform tasks such as logging expenses, managing itineraries, and capturing notes through voice or text commands, including background access that can simplify multitasking.

### Source excerpt

Posted by Ben Weiss, Senior Developer Relations Engineer, Android Developer Relations Welcome back to the blog post series "Build intelligent Android apps" where we take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our previous post, we explored how to leverage Firebase AI Logic to build cloud-hosted and hybrid AI features. Traditional mobile UIs excel at focused, hands-on tasks, and the Android intelligence system is introducing complementary features to make complex, multi-step actions even easier. By supplementing traditional user interfaces, AppFunctions provide a powerful new entry point: A privileged agent on the device can access app features in the background. This can be particularly helpful when users are driving, walking or otherwise multitasking. In this article, we'll show you how we designed and integrated these capabilities into our travel planning app, JetPacker, using Android AppFunctions. We'll explore the rationale behind our feature choices, discuss the specialized tooling we used to accelerate development, and dive into the code that makes it all work. Designing AI-ready features: making choices that matter for your users To select which features to provide to the intelligence system, we looked for tasks where a voice or text command is objectively faster than tapping through screens. In this side-by-side screen recording you can see this contrast perfectly: on the left, a user tapping through multiple screens to log an expense; on the right, the same task completed instantly in the background via a privileged agent. Our first choice was expense tracking. Logging a coffee expense during a trip usually takes quite a few taps--unlocking the phone, opening the app, finding the active trip, navigating to the expenses tab, tapping the add button, taking a picture of the receipt, and checking the result. By providing the addExpense and getExpenses features as AppFunctions, the system agent handles th

## On-Device Debugging And JUnit 5

DevFeed: [On-Device Debugging And JUnit 5](<https://devfeed.tech/articles/on-device-debugging-and-junit-5-19285.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/developer-workflow-debug-and-junit/>)

Author: Shai Almog

Published: 2026-05-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [ide](<https://devfeed.tech/topics/ide.md>), [simulator](<https://devfeed.tech/topics/simulator.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Code](<https://devfeed.tech/topics/code.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [Visual Studio Code](<https://devfeed.tech/topics/visual-studio-code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [apk](<https://devfeed.tech/tags/apk.md>), [app](<https://devfeed.tech/tags/app.md>), [breakpoint](<https://devfeed.tech/tags/breakpoint.md>), [build](<https://devfeed.tech/tags/build.md>), [code](<https://devfeed.tech/tags/code.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developer](<https://devfeed.tech/tags/developer.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [ide](<https://devfeed.tech/tags/ide.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [junit](<https://devfeed.tech/tags/junit.md>), [linux](<https://devfeed.tech/tags/linux.md>), [on-device](<https://devfeed.tech/tags/on-device.md>), [simulator](<https://devfeed.tech/tags/simulator.md>)

### AI overview

This tutorial describes Codename One's new JDWP-based on-device debugging for ParparVM iOS and Android apps. It explains debugging Java code and objects on simulators and physical devices using IntelliJ IDEA or other JDWP-speaking debuggers, and briefly covers standard JUnit 5 integration with the JavaSE simulator.

### Source excerpt

A walk-through of the new JDWP-based on-device debugging pipeline for ParparVM iOS apps and Android apps, with a step-by-step IntelliJ tutorial for each, and a short tutorial on the new standard JUnit 5 integration against the JavaSE simulator.

## Promies: Managing and Distributing Promo Codes for Android Apps

DevFeed: [Promies: Managing and Distributing Promo Codes for Android Apps](<https://devfeed.tech/articles/promies-code-distribution-a-hassle-free-way-to-manage-app-giveaways-38743.md>)

Original publisher: [Read original article](<https://www.paleblueapps.com/rockandnull/app-promo-code-distribution-system/>)

Author: Mike Yerou

Published: 2026-05-21T12:24:10Z

Content type: article

Language: en

Sources: [Rock and Null](<https://devfeed.tech/sources/rock-and-null.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [android-apps](<https://devfeed.tech/topics/android-apps.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [app](<https://devfeed.tech/tags/app.md>), [customizable](<https://devfeed.tech/tags/customizable.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [ios](<https://devfeed.tech/tags/ios.md>), [promotion](<https://devfeed.tech/tags/promotion.md>)

### AI overview

Promies is a system for organizing, distributing, and tracking promo codes for Android app giveaways. It uses batches and dedicated promotion URLs, with options such as email verification and pricing displays.

### Source excerpt

A smarter way to manage and distribute your app promo codes with the all-new Promies. Effortlessly build customizable promotion pages, protect your codes from bot abuse, and get free organic exposure to kickstart your app's growth.

## The Future of Android Apps with AppFunctions

DevFeed: [The Future of Android Apps with AppFunctions](<https://devfeed.tech/articles/the-future-of-android-apps-with-appfunctions-25755.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/the-future-of-android-apps-with-appfunctions/>)

Author: Shreyas Patil

Published: 2026-03-30T04:30:00Z

Content type: article

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [aidl](<https://devfeed.tech/tags/aidl.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

This article explains Android AppFunctions, which let apps expose self-describing data and functionality that AI agents and assistants can discover and execute using natural language. It discusses their optional nature, current device availability, Gemini access, and integration through the Android 16 SDK or Jetpack library.

### Source excerpt

Explore the potential of Android AppFunctions for AI agents. Learn how apps can share functionality with intelligent assistants using self-describing functions.

## 8 steps to success with Gemini in Android Studio

DevFeed: [8 steps to success with Gemini in Android Studio](<https://devfeed.tech/articles/8-steps-to-success-with-gemini-in-android-studio-25181.md>)

Original publisher: [Read original article](<https://joebirch.co/android/8-steps-to-success-with-gemini-in-android-studio/>)

Author: hitherejoe

Published: 2025-10-31T09:43:36Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [context](<https://devfeed.tech/topics/context.md>), [context window](<https://devfeed.tech/topics/context-window.md>), [API keys](<https://devfeed.tech/topics/api-keys.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [api](<https://devfeed.tech/tags/api.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [context-window](<https://devfeed.tech/tags/context-window.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [ide](<https://devfeed.tech/tags/ide.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>)

### AI overview

This tutorial presents configuration and workflow practices for using Gemini in Android Studio. It discusses API keys, larger context windows, agent rules, and Agents.MD files, with the goal of improving prompt results and trust in AI-assisted development.

### Source excerpt

AI tooling is becoming a key part of our day-to-day and now with solid Gemini support in Android Studio, we're seeing engineers embed this deeper in their workflows. When they work well, AI Agents can help us to work more efficiently and give us more time to focus on other tasks. But when they don't... Continue reading ->

## Exploring Material 3 for Compose: Large Top App Bar

DevFeed: [Exploring Material 3 for Compose: Large Top App Bar](<https://devfeed.tech/articles/exploring-material-3-for-compose-large-top-app-bar-25186.md>)

Original publisher: [Read original article](<https://joebirch.co/android/exploring-material-3-for-compose-large-top-app-bar/>)

Author: hitherejoe

Published: 2025-08-04T14:59:31Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [navigation](<https://devfeed.tech/topics/navigation.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [compose](<https://devfeed.tech/tags/compose.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implement](<https://devfeed.tech/tags/implement.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [jetpackcompose](<https://devfeed.tech/tags/jetpackcompose.md>), [material-design](<https://devfeed.tech/tags/material-design.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [screen](<https://devfeed.tech/tags/screen.md>), [state](<https://devfeed.tech/tags/state.md>), [visibility](<https://devfeed.tech/tags/visibility.md>)

### AI overview

This tutorial explains how to use and customize Material 3's LargeTopAppBar composable in Compose. It covers the app bar's expanded and collapsed states and the scroll behaviors that control its transitions.

### Source excerpt

In the last post, we took a look into the new Loading Indicator in the Material 3 expressive package. As we continue to dive into different parts of Material 3 we'll discover more components that we can plug into our apps. Up next we have the LargeTopAppBar - this composable brings dynamic, scroll-responsive navigation to... Continue reading ->

## A product manager's guide to adapting Android apps across devices

DevFeed: [A product manager's guide to adapting Android apps across devices](<https://devfeed.tech/articles/a-product-manager-s-guide-to-adapting-android-apps-across-devices-22667.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/a-product-managers-guide-to-adapting-android-apps-across-devices-b2e9b8bfe5f1?source=rss----95b274b437c2---4>)

Author: Android Developers

Published: 2025-06-10T18:06:14Z

Content type: article

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Large Screen](<https://devfeed.tech/topics/large-screen.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>), [App](<https://devfeed.tech/topics/app.md>), [API](<https://devfeed.tech/topics/api.md>), [Google](<https://devfeed.tech/topics/google.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [adaptive](<https://devfeed.tech/tags/adaptive.md>), [android](<https://devfeed.tech/tags/android.md>), [android-16](<https://devfeed.tech/tags/android-16.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [api](<https://devfeed.tech/tags/api.md>), [developer](<https://devfeed.tech/tags/developer.md>), [developer-preview](<https://devfeed.tech/tags/developer-preview.md>), [featured](<https://devfeed.tech/tags/featured.md>), [google-io-2025](<https://devfeed.tech/tags/google-io-2025.md>), [large-screen](<https://devfeed.tech/tags/large-screen.md>), [large-screen-display](<https://devfeed.tech/tags/large-screen-display.md>), [layout](<https://devfeed.tech/tags/layout.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-apps](<https://devfeed.tech/tags/mobile-apps.md>), [platform](<https://devfeed.tech/tags/platform.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This guide explains why Android developers should adapt apps for phones, foldables, tablets, Chromebooks, cars, Wear, and XR. It discusses Android 16 changes for apps targeting SDK 36, including changes to orientation and resizability restrictions on large-screen devices, and describes the user-experience, development-efficiency, and market-reach benefits of adaptive apps.

### Source excerpt

Posted by Fahd Imtiaz, Product Manager, Android Developer Experience This article is also shared on the Android Developers Blog Today, Android is launching a few updates across the platform! This includes the start of Android 16's rollout, with details for both developers and users, a Developer Preview for enhanced Android desktop experiences with connected displays, and updates for Android users across Google apps and more, plus the June Pixel Drop. We're also recapping all the Google I/O updates for Android developers focused on building excellent, adaptive Android apps. With new form factors emerging continually, the Android ecosystem is more dynamic than ever. From phones and foldables to tablets, Chromebooks, TVs, cars, Wear and XR, Android users expect their apps to run seamlessly across an increasingly diverse range of form factors. Yet, many Android apps fall short of these expectations as they are built with UI constraints such as being locked to a single orientation or restricted in resizability. With this in mind, Android 16 introduced API changes for apps targeting SDK level 36 to ignore orientation and resizability restrictions starting with large screen devices, shifting toward a unified model where adaptive apps are the norm. This is the moment to move ahead. Adaptive apps aren't just the future of Android, they're the expectation for your app to stand out across Android form factors. Why you should prioritize adaptive nowSource: internal Google data Prioritizing optimizations to make your app adaptive isn't just about keeping up with the orientation and resizability API changes in Android 16 for apps targeting SDK 36. Adaptive apps unlock tangible benefits across user experience, development efficiency, and market reach. Mobile apps can now reach users on over 500 million active large screen devices: Mobile apps run on foldables, tablets, Chromebooks, and even compatible cars, with minimal changes. Android 16 will introduce significant advancements i

## Understanding Dispatchers: Main and Main.immediate

DevFeed: [Understanding Dispatchers: Main and Main.immediate](<https://devfeed.tech/articles/understanding-dispatchers-main-and-main-immediate-25756.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/understanding-dispatchers-main-and-mainimmediate/>)

Author: Shreyas Patil

Published: 2025-04-02T12:22:06Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [coroutines-flow](<https://devfeed.tech/tags/coroutines-flow.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-beginner](<https://devfeed.tech/tags/kotlin-beginner.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>), [multithreading](<https://devfeed.tech/tags/multithreading.md>), [reactive-programming](<https://devfeed.tech/tags/reactive-programming.md>), [threadpools](<https://devfeed.tech/tags/threadpools.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

A deep dive into Kotlin coroutine dispatchers on Android, explaining the difference between Dispatchers.Main and Dispatchers.Main.immediate. It describes how HandlerContext dispatches work and when execution is posted to the main thread or performed synchronously on the current thread.

### Source excerpt

A deep dive into Kotlin Coroutine Dispatchers. Understand the subtle but important difference between Dispatchers.Main and Dispatchers.Main.immediate in Android.

## Bloco's 2024 Android app development update and return to client work

DevFeed: [Bloco's 2024 Android app development update and return to client work](<https://devfeed.tech/articles/about-our-last-year-and-forward-40800.md>)

Original publisher: [Read original article](<https://www.bloco.io/blog/about-our-last-year-and-forward>)

Author: Sérgio

Published: 2025-01-09T18:12:32Z

Content type: opinion

Language: en

Sources: [Blog - Bloco](<https://devfeed.tech/sources/blog-bloco.md>)

Topics: [android-apps](<https://devfeed.tech/topics/android-apps.md>), [Android](<https://devfeed.tech/topics/android.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [QR Code](<https://devfeed.tech/topics/qrcode.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [about](<https://devfeed.tech/tags/about.md>), [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [app](<https://devfeed.tech/tags/app.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [performance](<https://devfeed.tech/tags/performance.md>), [qr-code](<https://devfeed.tech/tags/qr-code.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

Bloco describes its 2024 shift toward developing Android apps, including the release of a Caderno remake and the launch of QR Friend. The company also fixed bugs, updated dependencies, improved performance, experimented with Google Play listings, and returned to client work while continuing to invest in its apps.

### Source excerpt

You may have noticed we've been sharing less about us. At the end of 2023 we decided to shake things up at Bloco.

## Benchmark Insights: Direct State Propagation vs. Lambda-based State in Jetpack Compose

DevFeed: [Benchmark Insights: Direct State Propagation vs. Lambda-based State in Jetpack Compose](<https://devfeed.tech/articles/benchmark-insights-direct-state-propagation-vs-lambda-based-state-in-jetpack-compose-25703.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/benchmark-insights-direct-state-propagation-vs-lambda-based-state-in-jetpack-compose/>)

Author: Shreyas Patil

Published: 2024-11-19T14:19:27Z

Content type: article

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [compose-compiler](<https://devfeed.tech/tags/compose-compiler.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [jetpack-compose-ui-components](<https://devfeed.tech/tags/jetpack-compose-ui-components.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [performance](<https://devfeed.tech/tags/performance.md>), [recompose](<https://devfeed.tech/tags/recompose.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

This article compares direct state propagation with lambda-based state propagation in Jetpack Compose using a prototype stock-market screen with frequent UI updates. It describes a macrobenchmark setup intended to analyze their performance and recomposition behavior, but the supplied text does not include the benchmark results or conclusions.

### Source excerpt

Performance benchmarks of direct state propagation vs. lambda-based state in Jetpack Compose. Learn which approach minimizes recompositions for better UI performance.

## Skipping the invocation of intermediate composables

DevFeed: [Skipping the invocation of intermediate composables](<https://devfeed.tech/articles/skipping-the-invocation-of-intermediate-composables-25749.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/skipping-the-invocation-of-intermediate-composables/>)

Author: Shreyas Patil

Published: 2024-11-11T13:33:20Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-app-development](<https://devfeed.tech/topics/android-app-development.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-compiler](<https://devfeed.tech/tags/compose-compiler.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [performance](<https://devfeed.tech/tags/performance.md>), [reactjs](<https://devfeed.tech/tags/reactjs.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

This tutorial explains how Jetpack Compose can skip intermediate composables during recomposition. It discusses deferring state reads, using lambdas, and structuring screens with stateful and stateless composables to reduce unnecessary UI work.

### Source excerpt

Learn how Jetpack Compose optimizes UI rendering by skipping intermediate composables. Understand how to design your UI for maximum performance.

## Hue-manize Your Android Apps: Develop for Color Blindness

DevFeed: [Hue-manize Your Android Apps: Develop for Color Blindness](<https://devfeed.tech/articles/hue-manize-your-android-apps-develop-for-color-blindness-27343.md>)

Original publisher: [Read original article](<https://blog.mmckenna.me/hue-manize-your-android-apps-develop-for-color-blindness>)

Author: Matt McKenna

Published: 2024-10-17T04:00:00Z

Content type: article

Language: en

Sources: [Matt McKenna](<https://devfeed.tech/sources/matt-mckenna.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-apps](<https://devfeed.tech/topics/android-apps.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [apps](<https://devfeed.tech/tags/apps.md>), [conference-sessions](<https://devfeed.tech/tags/conference-sessions.md>), [develop](<https://devfeed.tech/tags/develop.md>), [droidcon](<https://devfeed.tech/tags/droidcon.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The article discusses how Android apps appear to people with color blindness or low vision and describes the impact of inaccessible apps on daily life.

### Source excerpt

Have you ever wondered how your Android app appears to someone with color blindness or low vision? We will share firsthand how inaccessible apps impact daily life. https://player.vimeo.com/video/1017418233?autopause=0&autoplay=0&color=00adef&portrait...

## How to debug Android apps over the Internet

DevFeed: [How to debug Android apps over the Internet](<https://devfeed.tech/articles/how-to-debug-android-apps-over-the-internet-29059.md>)

Original publisher: [Read original article](<https://dmitrysamoylenko.com/2024/06/26/android-adb-debug-over-internet.html>)

Author: Dmitry Samoylenko

Published: 2024-06-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dmitry Samoylenko - Android Developer Blog](<https://devfeed.tech/sources/dmitry-samoylenko-android-developer-blog.md>)

Topics: [adb](<https://devfeed.tech/topics/adb.md>), [Android](<https://devfeed.tech/topics/android.md>), [Wireless Debugging](<https://devfeed.tech/topics/wireless-debugging.md>), [debug](<https://devfeed.tech/topics/debug.md>), [Internet](<https://devfeed.tech/topics/internet.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [debug](<https://devfeed.tech/tags/debug.md>), [internet](<https://devfeed.tech/tags/internet.md>), [remote](<https://devfeed.tech/tags/remote.md>), [server](<https://devfeed.tech/tags/server.md>)

### AI overview

A tutorial about debugging Android apps over the Internet when the developer and target device are in different locations or the app runs on a remote machine. It outlines connecting the phone to one machine with adb and checking the connection from the remote machine.

### Source excerpt

How to debug Android apps over the Internet

## Capturing composable to a bitmap without losing a state

DevFeed: [Capturing composable to a bitmap without losing a state](<https://devfeed.tech/articles/capturing-composable-to-a-bitmap-without-losing-a-state-25705.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/capturing-composable-to-a-bitmap-without-losing-a-state/>)

Author: Shreyas Patil

Published: 2024-03-20T13:58:20Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [caching](<https://devfeed.tech/tags/caching.md>), [capture](<https://devfeed.tech/tags/capture.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [jetpack-compose-layouts-and-modifiers](<https://devfeed.tech/tags/jetpack-compose-layouts-and-modifiers.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile-apps](<https://devfeed.tech/tags/mobile-apps.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [screenshot](<https://devfeed.tech/tags/screenshot.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to capture Jetpack Compose content as a Bitmap while preserving its current state. It describes the Compose 1.6.x rendering approach, shows how stateful content such as counters and network images can expose problems, and examines caching and canvas rendering behavior.

### Source excerpt

Learn how to capture a Jetpack Compose Composable as a Bitmap without losing its current state. A deep dive into capturing high-quality UI screenshots programmatically.

## Rich media input from the keyboard in Compose

DevFeed: [Rich media input from the keyboard in Compose](<https://devfeed.tech/articles/rich-media-input-from-the-keyboard-in-compose-25744.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/rich-media-input-from-the-keyboard-in-compose/>)

Author: Shreyas Patil

Published: 2024-03-01T12:49:32Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [GUI](<https://devfeed.tech/topics/gui.md>), [App](<https://devfeed.tech/topics/app.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [api](<https://devfeed.tech/tags/api.md>), [app](<https://devfeed.tech/tags/app.md>), [applications](<https://devfeed.tech/tags/applications.md>), [building](<https://devfeed.tech/tags/building.md>), [chat](<https://devfeed.tech/tags/chat.md>), [code](<https://devfeed.tech/tags/code.md>), [components](<https://devfeed.tech/tags/components.md>), [compose](<https://devfeed.tech/tags/compose.md>), [content](<https://devfeed.tech/tags/content.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [explore](<https://devfeed.tech/tags/explore.md>), [feature](<https://devfeed.tech/tags/feature.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [image](<https://devfeed.tech/tags/image.md>), [images](<https://devfeed.tech/tags/images.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learn](<https://devfeed.tech/tags/learn.md>), [media](<https://devfeed.tech/tags/media.md>), [mobile-apps](<https://devfeed.tech/tags/mobile-apps.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [programming-blogs](<https://devfeed.tech/tags/programming-blogs.md>), [ui](<https://devfeed.tech/tags/ui.md>), [uiux](<https://devfeed.tech/tags/uiux.md>)

### AI overview

A tutorial on handling rich media input such as GIFs and images from the keyboard in Jetpack Compose chat applications. It explains that Jetpack Compose 1.7.x introduced an API and modifier for receiving specified content types through keyboard input, with related support for drag-and-drop and clipboard content.

### Source excerpt

Learn how to handle rich media input (like GIFs and images) from the keyboard in Jetpack Compose, essential for modern chat applications.

## Introducing Firebase and Android Basics with Compose course

DevFeed: [Introducing Firebase and Android Basics with Compose course](<https://devfeed.tech/articles/introducing-firebase-and-android-basics-with-compose-course-16522.md>)

Original publisher: [Read original article](<https://firebase.blog/posts/2023/06/android-jetpack-basics>)

Author: Marina Coelho

Published: 2023-06-02T00:00:00Z

Content type: release

Language: en

Sources: [Firebase Blog](<https://devfeed.tech/sources/firebase-blog.md>)

Topics: [Firebase](<https://devfeed.tech/topics/firebase.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Firestore](<https://devfeed.tech/topics/firestore.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Material Design](<https://devfeed.tech/topics/material-design.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [beginner](<https://devfeed.tech/tags/beginner.md>), [compose](<https://devfeed.tech/tags/compose.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firestore](<https://devfeed.tech/tags/firestore.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [launch](<https://devfeed.tech/tags/launch.md>), [material-design](<https://devfeed.tech/tags/material-design.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>)

### AI overview

Firebase and the Android team announce the Firebase and Android Basics with Compose course, which teaches learners to build native Android apps with Jetpack Compose and Firebase services. The course covers UI design, recommended architecture, authentication, data storage, remote configuration, and performance monitoring.

### Source excerpt

We teamed up with the Android team to build the Firebase and Android Basics with Compose course!

## Saving 5,400 hours a year with Gradle's Configuration Cache

DevFeed: [Saving 5,400 hours a year with Gradle's Configuration Cache](<https://devfeed.tech/articles/saving-5-400-hours-a-year-with-gradle-s-configuration-cache-15462.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/5-400-hours-a-year-saving-developers-time-and-sanity-with-gradles>)

Author: Paul Hundal

Published: 2022-12-13T05:00:00Z

Content type: article

Language: en

Sources: [Square Corner Blog](<https://devfeed.tech/sources/square-corner-blog-medium.md>), [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [build times](<https://devfeed.tech/topics/build-times.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [code productivity](<https://devfeed.tech/topics/code-productivity.md>), [Android](<https://devfeed.tech/topics/android.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [build](<https://devfeed.tech/tags/build.md>), [build-times](<https://devfeed.tech/tags/build-times.md>), [cache](<https://devfeed.tech/tags/cache.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [developer-productivity](<https://devfeed.tech/tags/developer-productivity.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [mobile](<https://devfeed.tech/tags/mobile.md>)

### AI overview

Square's Android team integrated Gradle's Configuration Cache to reuse task-graph computations. The article says local build waiting time fell from 182 to 25 hours per week for a team supporting about 200 developers, with estimated annual productivity recovery of $1.1 million.

### Source excerpt

Recovering an estimated $1.1 million in lost productivity annually

## Jetpack Compose under the hood

DevFeed: [Jetpack Compose under the hood](<https://devfeed.tech/articles/jetpack-compose-under-the-hood-25851.md>)

Original publisher: [Read original article](<https://medium.com/@banmarkovic/jetpack-compose-under-the-hood-7bb88f08c47e?source=rss-8aced922ece------2>)

Author: Ban Markovic

Published: 2022-12-12T10:49:33Z

Content type: tutorial

Language: en

Sources: [Stories by Ban Markovic on Medium](<https://devfeed.tech/sources/stories-by-ban-markovic-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [SDK](<https://devfeed.tech/topics/sdk.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [compose](<https://devfeed.tech/tags/compose.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial introduces Jetpack Compose by comparing it with Android's traditional View System. It explains how Android UI development evolved from findViewById and Butter Knife to Kotlin synthetics, ViewBinding, and DataBinding, and frames Compose as a response to increasing UI complexity and UX requirements.

### Source excerpt

The development of Android mobile apps is nothing new. We have been doing it since 2009, when the Android SDK was published. In the meantime, many APIs used for developing Android mobile apps were updated, but the general idea of app development remained. Looking at something as basic as accessing the UI elements and modifying them, we can see the constant need for improvement and change. We've started with findViewById, then we transferred to Butter Knife library. After we switched from Java to Kotlin, we were introduced to Kotlin synthetics, then it went deprecated soon enough, and it was replaced by ViewBinding. In the meantime, we also received a new support library, DataBinding, that enabled us to bind our UI components to data sources from our app. As we can see, even though the final goal was the same (accessing UI elements defined inside XML and modifying their values), the APIs for reaching our goal were changed quite drastically and quite often. Why so many changes? The constant need for polishing the UX of ours apps introduced a lot more complexity in our mobile app projects. Designers demand more and more from their developers, and developers constantly strive for making their code as flexible and reusable as possible. This is something that gets harder and harder to accomplish when your base is not particularly designed for handling new types of designers requirements. Motivation To better learn something new, we need to understand the differences between what we know (Android View System) and the new things that are introduced by the new system (Jetpack Compose). Sometimes this feels overwhelming, because at the beginning, most of it looks like magic as we don't know anything about it. By familiarizing ourselves with Jetpack Compose way of working, we are putting ourselves in a better position to utilize this new tool. Android View System The base for developing Android apps most of us are currently using is Android View System. It is here since 2009 a

## How OkCredit Android App boosted Network Performance by 30%

DevFeed: [How OkCredit Android App boosted Network Performance by 30%](<https://devfeed.tech/articles/how-okcredit-android-app-boosted-network-performance-by-30-37400.md>)

Original publisher: [Read original article](<https://medium.com/okcredit/how-okcredit-android-app-boosted-network-performance-by-30-84109080c065?source=rss----40ea5327aac7---4>)

Author: Shrey Garg

Published: 2022-07-07T11:29:22Z

Content type: tutorial

Language: en

Sources: [OkCredit - Medium](<https://devfeed.tech/sources/okcredit-medium.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-apps](<https://devfeed.tech/topics/android-apps.md>), [Instrumentation](<https://devfeed.tech/topics/instrumentation.md>), [Network](<https://devfeed.tech/topics/network.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [TLS handshake](<https://devfeed.tech/topics/tls-handshake.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [http](<https://devfeed.tech/tags/http.md>), [instrumentation](<https://devfeed.tech/tags/instrumentation.md>), [latency](<https://devfeed.tech/tags/latency.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [network](<https://devfeed.tech/tags/network.md>), [okcredit](<https://devfeed.tech/tags/okcredit.md>), [performance](<https://devfeed.tech/tags/performance.md>), [tls-handshake](<https://devfeed.tech/tags/tls-handshake.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

This tutorial explains how to analyze and optimize each stage of network calls in Android apps, including call start, DNS resolution, TLS connection setup, request and response transfer, connection reuse, and call completion. It describes using OkHttp connection pooling and the EventListener class to instrument HTTP-call metrics such as quantity, size, and duration.

### Source excerpt

Fast and reliable network communication is crucial for OkCredit mobile apps. Since the majority of our users belong to Tier-2/3 cities in India, flaky and unreliable network connection is one of the biggest challenges for us. In order to deliver a good user experience, our mobile apps need to have reliable and low-latency network connectivity. While most resources we found describe how we can improve the overall time (start-end) of a network call, this article attempts to take a deep dive and talk about each step and how we can instrument and optimise each step of a network call in android apps. Steps involved in a network callFig. Steps of a Network call. Ref -- https://square.github.io/okhttp/features/events1. Call start Called as soon as a call is enqueued or executed by a client. Ideally, this step should not consume any time unless there are any custom Interceptors added. 2. DNS Involves the DNS Resolver translating the domain name into the corresponding identifier (the IP address). 3. Connection Start Tries to acquire a secure connection (TLS handshake) between the client and the server. 4. Connection End / Acquired Invoked after a connection has been acquired for the call. After this, the communication of request and response payloads is started. 5. Request / Response / Headers This is the step in which the actual communication of data happens. The HTTP method, size of request / response payload, server latency / response time, etc. can greatly impact the time taken by this step. 6. Connection released Invoked after a connection has been released for the call. 7. Call end Invoked immediately after a call has completely ended. Pooled connection OkHttp has the capability to pool connections with which it can skip various steps of a network call mentioned above, which in turn can greatly improve the application's network performance, as existing connections can be reused. Fig. Steps of a Network call with pooled connectionInstrumentation of each step To determine

## Coroutines on Android

DevFeed: [Coroutines on Android](<https://devfeed.tech/articles/coroutines-on-android-23898.md>)

Original publisher: [Read original article](<https://medium.com/smg-real-estate/coroutines-on-android-d3e3413e6aa7?source=rss----2186e5b9bd8f---4>)

Author: Stevan Milovanovic

Published: 2022-05-20T12:36:23Z

Content type: tutorial

Language: en

Sources: [Homegate Engineering Blog - Medium](<https://devfeed.tech/sources/homegate-engineering-blog-medium.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Android](<https://devfeed.tech/topics/android.md>), [async](<https://devfeed.tech/topics/async.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [context](<https://devfeed.tech/topics/context.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [article](<https://devfeed.tech/tags/article.md>), [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [cancellation](<https://devfeed.tech/tags/cancellation.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutine-testing](<https://devfeed.tech/tags/coroutine-testing.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dispatcher](<https://devfeed.tech/tags/dispatcher.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [programming](<https://devfeed.tech/tags/programming.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

This tutorial explains why Kotlin coroutines can be preferable to threads for asynchronous and background processing on Android. It introduces coroutine scopes, contexts, suspending functions, jobs, and dispatchers, and describes using coroutines for networking and background processing.

### Source excerpt

Coroutines on Android In this article I'll try to explain why coroutines are useful and why would you want to use them in your project. After we go through the most important concepts of coroutines, I'll show you how I used coroutines to implement networking and background processing in the example project. First of all, you might ask yourself, why we want to use coroutines over threads? Main problem with threads is that they are resource intensive, meaning it takes a lot of resources to start a thread, stop a thread. Meanwhile, coroutines are lightweight threads, since they use thread pools. Another benefit of coroutines is that they greatly simplify asynchronous code. Callbacks and synchronisation are very easy to use. In fact, they make parallel programming look very much like sequential programming. Coroutines can be paused and resumed at any time, on a number of threads. And lastly, since coroutines are based on a few fairly easy to grasp concepts, their syntax is simple and easy to use. Here are the main concepts we need to explain about coroutines: Scope Coroutine scope, as its name says, defines a scope for new coroutines. Every coroutine builder (like launch and async) is an extension on CoroutineScope and inherits its coroutineContext to automatically propagate all its elements and cancellation. Context Coroutine context represents the context of its scope. Context is encapsulated by the scope and used for implementation of coroutine builders that are extensions on the scope. Scope provides a context in which the coroutine runs (state of the coroutine which provides variables, functionality of the coroutine etc.). Suspending functions Suspending functions are functions that can be run in a coroutine. They make callbacks seamless. They can be run in a coroutine (can be suspended) and that is why they can provide functionalities which have to be run in parallel. Job Job is a handle on that coroutine (on the piece of code which runs in the background). A laun

## Implementing Periodic Notifications with WorkManager

DevFeed: [Implementing Periodic Notifications with WorkManager](<https://devfeed.tech/articles/implementing-periodic-notifications-with-workmanager-25680.md>)

Original publisher: [Read original article](<https://blog.sanskar10100.dev/implementing-periodic-notifications-with-workmanager>)

Author: Sanskar Agrawal

Published: 2022-04-09T14:49:59Z

Content type: tutorial

Language: en

Sources: [Sanskar's Stuff](<https://devfeed.tech/sources/sanskar-s-stuff.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [coding](<https://devfeed.tech/topics/coding.md>), [App](<https://devfeed.tech/topics/app.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [apps](<https://devfeed.tech/tags/apps.md>), [cloud-functions](<https://devfeed.tech/tags/cloud-functions.md>), [cloud-messaging](<https://devfeed.tech/tags/cloud-messaging.md>), [coding](<https://devfeed.tech/tags/coding.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firebase-console](<https://devfeed.tech/tags/firebase-console.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This article describes implementing recurring Android notifications for the Transactions app. It compares Firebase Cloud Messaging with on-device WorkManager periodic work requests, choosing WorkManager because users need to change the reminder time and opt out without relying on a backend.

### Source excerpt

I had some free time on my hands this morning so I decided to work on an issue for my app Transactions. The issue was to add a recurring notification feature that would remind the users of the app to log their transactions for the day. So, I did some...

## Styling dynamic strings directly in Android xml

DevFeed: [Styling dynamic strings directly in Android xml](<https://devfeed.tech/articles/styling-dynamic-strings-directly-in-android-xml-25691.md>)

Original publisher: [Read original article](<https://sergiosastre.hashnode.dev/styling-dynamic-strings-directly-in-android-xml>)

Author: Sergio Sastre Florez

Published: 2021-04-26T09:44:33Z

Content type: tutorial

Language: en

Sources: [Sergio's little tech corner](<https://devfeed.tech/sources/sergio-s-little-tech-corner.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [XML](<https://devfeed.tech/topics/xml.md>), [User Interfaces](<https://devfeed.tech/topics/user-interfaces.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [html](<https://devfeed.tech/tags/html.md>), [ui](<https://devfeed.tech/tags/ui.md>), [user-interfaces](<https://devfeed.tech/tags/user-interfaces.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This tutorial explains how to style dynamically assembled strings in Android XML resources. It describes the standard placeholder and HTML-markup approach, its limitations when dynamic text contains unescaped HTML characters, and the use of HtmlCompat with escaped placeholder values.

### Source excerpt

In Android, Strings are one of the most common Objects when working with views that show plain text. While implementing user interfaces, it happens often that the text requires some styling. For styled Strings, we are required to use CharSequences in...

[Next page](<https://devfeed.tech/tags/android-apps.md?cursor=WyIyMDIxLTA0LTI2VDA5OjQ0OjMzKzAwOjAwIiwgIjM1OTcwNTY3LTM3MDYtNDZlOS04NGZmLThiYWIyZGQ5NjNjOCJd>)