π TikTok increased their Google Play rating by improving app performance.
They used the #Jetpack App Startup library and Layout Inspector in @AndroidStudio to find areas of improvement and refine them.
Check out their story of Android #AppExcellence β
http://goo.gle/3Cx6IaS
:sys_twitter: https://twitter.com/AndroidDev/status/1562821079760257025
Quality app + quality reviews = π€
Business growth! π
Take a technical dive into best practices and techniques for creating #AppExcellence.
:sys_twitter: https://twitter.com/AndroidDev/status/1537842516640165888
Just one line of code can improve your app startup time. π€―
Calling reportFullyDrawn() when your app is in a usable state can improve cold boot startup times, and you also get better Android vitals data. β
#AppExcellence
http://goo.gle/3wDSb9J
:sys_twitter: https://twitter.com/AndroidDev/status/1529084809892483073
Rideshare app @lyft used data from Android Vitals to improve startup time by 21% for its Driver app!
Learn how they did it and how you can also make a case to invest in #AppExcellence. β
https://goo.gle/3NrcGNv
:sys_twitter: https://twitter.com/AndroidDev/status/1511449066852524039
Creating the best app experience starts with the right architecture, and we have the blueprint for success to achieve #AppExcellence!
π UI layer
π Domain layer
π Data layer
Learn more about our recommended app architecture β
http://goo.gle/3x3m44b
:sys_twitter: https://twitter.com/AndroidDev/status/1508972626185699328
Improving app startup time can have a BIG impact on user retention.
Learn how @OfficialJoshApp improved app startup time by 30% and made the app 3x faster for users on older and low end devices. β
#AppExcellence #AppQuality
https://goo.gle/3tUQi5V
:sys_twitter: https://twitter.com/AndroidDev/status/1503959244193816576
Donβt create a LiveData or StateFlow if you don't need to! @bentrengrove has an #AppExcellence tip. ππ»
π‘ Compose state objects donβt have to be stored in a Composable function. You can use them in a ViewModel!
Find out more β
http://goo.gle/3u23HL7
:sys_twitter: https://twitter.com/AndroidDev/status/1487062911960895494
Check out this #AppExcellence tip for #JetpackCompose! π½
π¬ "Use spacedBy instead of Spacer to space out items by a fixed amount." - @bentrengrove
Learn more β
http://goo.gle/3KFXoml
:sys_twitter: https://twitter.com/AndroidDev/status/1485975750750748678
#AppExcellence #JetpackCompose
Check out this #AppExcellence tip from @marxallski! β¬
Applying the "Theme.Material3.DynamicColors.DayNight" in your AppWidget layout will get you dynamic colors in #Android12 devices and fallback to material3 colors for older devices.
Learn more β
http://goo.gle/3KuB6Ec
:sys_twitter: https://twitter.com/AndroidDev/status/1484526196796928002
Improve startup time with one line of code by following this #AppExcellence tip from @SKateryna!β¬
Android prioritizes work that happens before reportFullyDrawn() is called. Calling this method when your app is in usable state will improve startup time.β
http://goo.gle/3z6vdb0
:sys_twitter: https://twitter.com/AndroidDev/status/1476597170140856323
Check out this #AppExcellence tip from @manuelvicnt! ππΎ
βThe UI should handle UI logic and the ViewModel provides the screen state and access to the business logic that lives in the data and business layers. Don't mix them up!β
:sys_twitter: https://twitter.com/AndroidDev/status/1475949752424488963
π€ Do you need an external scope to outlive the caller's scope?
Inject it! β
#AppExcellence
http://goo.gle/3yNShuO
:sys_twitter: https://twitter.com/AndroidDev/status/1474137805513236484
Check out this #AppExcellence tip from @manuelvicnt π
βSimplify your APIs with coroutines and Flow. Use suspendCancellableCoroutine or callbackFlow to provide easy access to your API.β
Learn more β
http://goo.gle/3JbA0fI
:sys_twitter: https://twitter.com/AndroidDev/status/1473782969005490179
viewModelScope gives you an easy way to start coroutines that survive configuration changes.
Learn how with this #AppExcellence tip from @manuelvicnt! ππ» then read more ππ»
http://goo.gle/3F3aRkY
:sys_twitter: https://twitter.com/AndroidDev/status/1471903139712446466
RTβAndroid Developers
π We compiled a list of best practices for coroutines in Android, including:
β
Inject Dispatchers
β
Avoid GlobalScope
β
Use viewModelScope
and much more!
Check out our guide for more details β
#AppExcellence
http://goo.gle/3dultxn
:sys_twitter: https://twitter.com/AndroidDev/status/1469330797136162820
βοΈ @headspace is so committed to #AppExcellence for Android users they did a complete rewrite in Kotlin.
See how they increased monthly active users globally by 15% β
http://goo.gle/3IQfilN
:sys_twitter: https://twitter.com/AndroidDev/status/1470574309022253062
π We compiled a list of best practices for coroutines in Android, including:
β
Inject Dispatchers
β
Avoid GlobalScope
β
Use viewModelScope
and much more!
Check out our guide for more details β
#AppExcellence
http://goo.gle/3dultxn
:sys_twitter: https://twitter.com/AndroidDev/status/1469330797136162820
π‘ Use the new repeatOnLifecycle API to stop collecting flows when the app is in the background.
Check out this #AppExcellence tip from @manuelvicnt, then read the blog. β
http://goo.gle/31r85HF
:sys_twitter: https://twitter.com/AndroidDev/status/1468254452268285961
βπΎπ Get out your notebooks because class is in session! Check out this #AppExcellence tip from @manuelvicnt. β¬οΈ
βAdd Component to the Hilt hierarchy when you want to scope instances to other classes that arenβt part of the Android SDK.β
Read more β
http://goo.gle/3IcqpEZ
:sys_twitter: https://twitter.com/AndroidDev/status/1466769248471109641
Have you migrated from Dagger to Hilt? @manuelvicnt has an #AppExcellence tip for you! π
βThe Android X extensions, testing APIs, consistency between projects, and the interop Hilt brings to the table outnumber the headaches Dagger can give you.β β
http://goo.gle/3dhaozH
:sys_twitter: https://twitter.com/AndroidDev/status/1465682083465023493