Android Learning Resources
3 min readSep 1, 2020
We struggle a lot learning small, basic and specific concepts. Here is my list of resources which may help you understand Android in a better way:
Java
- Is java pass by reference or value?: Link 1, Link 2
- Desugaring in Java
- Understanding Overloading and Overriding in Java
- Practice Overloading and Overriding Java
- When to use Static class and when Singleton? : Link 1, Link 2
- OnClickListener Internals: Link 1, Link 2
- Hashmap Internals
- ArrayList Internals
- LinkedList Internals, Link 2
- Reflection in Java: Link 1, Link 2
- Garbage Collection
- Why Java is platform-independent? : Link 1, Link 2
- Implements Runnable vs extends Thread: Link 1, Link 2
- Sparse Array v/s Hashmap
- Static v/s Singleton
- Lambda vs Anonymous Classes
- Dependency Injection vs Inversion
- Stack vs Heap Memory
- When to use Handler/thread?
- Handler Internals
- Java to Kotlin
Android
- D8 vs R8
- ART vs Dalvik
- Android 11 Features
- FAQ on Scoped Storage
- Launch Modes with example.
- Recent changes in the Play store
- Activity Life Cycle
- Fragment LifeCycle
- Fragment Transition
- WindowManager BadToken Exception
- MVP vs MVVM vs MVI: Link 1, Link 2
- How MVI works
- How MVI works?
- Mediator vs Mutable Live Data
- Why and when to use Mediator Live Data
- Livedata transformations and Mediator LiveData
- LiveData vs Observable Field
- Sealed Classes
- Data Classes
- setValue vs PostValue
- Exceptions vs Error
- Memory Leaks
- Solve OOM
- How to find OOM through hProf
- Understanding MultiDex
- Hardware Acceleration
- Link 2
- Understanding Webview methods
- Memory Leak in WebView
- WebView Best Practices
- WebView vs ChromeTab
- Custom Tab — What, How, When, Why
- Under FCM concepts for Foreground and Background
- Memory Management, Link 2, Link 3
- Understanding Job Scheduler
- If u need all-time location access, what should you do?
- LayoutAnimation attribute for recyclerView not working for some devices?
- RecyclerView Internals, Link 2, Link 3
- Migration to Paging 3, Link 2
- WorkManager vs JobScheduler
- Why & How DiffUtil?
- Lifecycle View in Android, Link 2
- Kotlin Flow
- The SOLID Principles for Android Developers
- Kotlin Quick tips
- Jetpack Navigation between top-level destinations using Dagger-Hilt
- OkHttp vs Retrofit
- Understanding Android New Results API
- RecyclerView Tips
- LiveData with Coroutines and Flow
- Why @JvmOverloads in Kotlin
- Understanding Elvis Operator pitfalls
- Understanding Scoped Storage
- Understanding Android AllowBackup
- Understanding JSON Web Token
- ConstraintLayout
- Should we use largeHeap attribute in Android manifest
- Coroutines vs RxJava
- Mockito vs Mockk
- Best practices to test Static Methods
- Writing Testable Code
- JUnit Annotations
- Why Mockito can’t mock static methods
- apply vs let vs run in Kotlin
- Improve recyclerView Performance
- Understand Clean Architecture
- Memory management and Leaks
- Which context to use
- Steps to Build a quality app
- DDMS vs Android Profiler
- Activity Process LifeCycle
- System vs Data Notification — FCM
- Scheduler vs Dispatcher
- ViewModelFactory
- Custom Chrome Tabs
- Progressive vs Native App
- SDK vs Non SDK interfaces
- View Life Cycle
- How Vector drawable works
- Dagger vs Koin
- Handler vs HandlerThread vs Looper
- Enum vs Sealed Classes
- Understand Vector drawable path commands
- Custom Views performance
- Know About Memory Leaks
- FindViewById vs Synthetic Binding
- How the Enums impact performance?
- Parcelable interface implementation
- Rx with Retrofit with sample.
- Understand Android DataBinding.
- How recyclerView works internally?
- Annotation Processor
- Design Pattern
- Kotlin Questionnaire
- Coroutine Exception Handling CheatSheet
- StateFlow vs SharedFlow
- Kotlin Flows
- When to use Coroutines.unconfined?
- Lateinit vs Lazy
- Activity result API
- Lifecycle aware components
- ViewModel under the hood
- SavedState Handle
- WorkManager under the hood
- Shared Preference under the hood
- Fragment vs Custom View
- RecyclerView ViewHolder
- Ktx Extensions
- merge vs include in layout
- Okhttp interceptors under the hood
- Retrofit under the hood
- Create your own livedata.
- Enum vs sealed class
- ViewModel Best Practices
- Pros/cons of Multiple processes on Android
- How room works internally?
- How leak Canary Works?
- Mockito vs Mockk
- Mock vs Stub vs spy in Unit Testing
- Mockito vs PowerMock
Sharing some good resources from where one can learn:
- Developer Guide: https://developer.android.com/guide
- Codelabs: https://codelabs.developers.google.com/
- Udacity: https://www.udacity.com
- MindOrks: https://mindorks.com
- Ray Wenderlich: https://www.raywenderlich.com/
- CodingWithMitch: https://www.youtube.com/channel/UCoNZZLhPuuRteu02rh7bzsw
- Awesome Learning Resources: https://github.com/androiddevnotes/awesome-android-learning-resources
- Best Practices: https://proandroiddev.com/android-development-best-practices-7278e9cdbbe9
- Interview Questions: https://github.com/niharika2810/android-interview-questions
- Refactoring
- Clean Code
Originally published here.
Will be adding more int the Github repo after sorting them out. Please contribute if you have more so that I can also learn. :-)
Github Link for contribution :
Enjoy Reading!!