This article is reprinted from the WeChat public account "Programmer Bus", written by Eason. Please contact the Programmer Bus public account to reprint this article. I saw an article saying "There are already many junior Android programmers in China in recent years, but mid-level and senior Android technical talents are still scarce"; this is indeed true. It is already 2022, and it has been seven or eight years since the peak of Android. It is not easy to find a suitable mid-level or senior Android engineer now. Generally, a lot of interviews are required to select a satisfactory one. So Eason wants to write an article to describe the Android learning route, hoping to help more Android programmers improve themselves. This article applies to: Anyone who wants to learn Android development but doesn't know where to start. It's also for anyone who's already started Android development but wants to get better. In order to become a better Android developer, Eason provides a general roadmap for everyone. If the following learning route can help you become a better Android developer, then my mission is accomplished: A Complete Guide to Learning Android App Development Android Developer Roadmap Install Android Studio IDE and start using Android - What is Android and how does it work?
- Install Android Studio
Android Components - What is an Activity?
- UI Design - User Interface
- What is a View and how does it work?
- What is an Intent?
- Activity Lifecycle
- Dialog UI
Shared Preferences - Even if you kill the app and reopen it, the data will be retained because you can use Shared Preferences.
RecyclerView - To build UIs that display lists of items, Android apps use RecyclerView.
- Applications such as WeChat and QQ use RecyclerView to construct chat screens.
Getting started with Kotlin - Google has officially announced Kotlin as a first-class language for Android. It is important to learn Kotlin now.
- Kotlin is concise, null-safe, and interoperable.
- Start with the basics of Kotlin.
- Convert Java code to Kotlin using basic knowledge of Kotlin.
Singletons, Processes, and Threads - Applications taking advantage of threads can make applications run faster and provide the best user experience.
- It will also be a huge help in interviews.
Database Implementation - Use a database to store messages, so you can see all messages sent or received even when you are not connected to the Internet.
- Most apps use a database to store data.
Permissions and image loading - Apps that involve call permissions will ask for contact permissions when they are launched for the first time.
- Use an image loading library like Glide Volley to load images from the feed.
Work Manager Using WorkManager, apps can even fetch data while they are asleep and show you the latest news when you open the app in the morning, even if you haven’t been connected to the network for some time during the night. Notification - Almost all Android apps use notifications to show any updates to the app.
NetWork - The application obtains data from the server through network calls.
ViewPager and Fragment - Mainstream apps like Tik Tok and WeChat use ViewPager to allow users to scroll between content fragments, friend circle fragments, personal center fragments, etc.
- Activities contain Fragments.
Debugging and APK Release - Debugging - This is a learning opportunity for developers, after all, it is one of the most important skills.
- APK Publishing – Publish your app on the app stores and reach your users easily.
Key Points - What is Context?
- Object-Oriented Programming — OOP
- Class design and structure
- File system, read, write, asset read and write
- ConstraintLayout in Android
- Canvas API in Android
- Custom View
At this point, you have almost mastered the basic knowledge and will easily achieve: - Start developing your own DIY Android apps.
- Find your first internship in Android.
- Publish your app on the app store.
Now, let’s move on to the next milestone. Dagger - When the project gets bigger, you need to learn about dependency management and use Dagger in your project to manage dependencies. Companies like Google use Dagger in their Android applications.
- Learn to design your own dependency management framework.
Learn Kotlin - Brush up on the basics of Kotlin.
- Start learning Kotlin language-specific features.
- Learn advanced Kotlin features.
- Nowadays, most of the companies are starting to use Kotlin for their new projects. Also, older Java projects are being migrated to Kotlin.
Architectural Components - Architecture components like LiveData, LifeCycle, ViewModel etc. help in managing our UI component lifecycle and handling data persistence.
- Challenges of lifecycle processing, Activity rotation problem
- Learn to create lifecycle-aware components
- Shared ViewModel
RxJava - RxJava has become one of the most important skills in Android development.
- Almost every application uses RxJava for multithreading.
- RxJava makes life easy for developers.
- How do threads work in Android?
Database Design - The application uses a database to store data on the Android side, and the database is designed to make queries faster, making the application run faster.
- Right now, we are using Room, a library created by Google. Room provides an abstraction layer on top of SQLite to allow for fluid database access while leveraging the full power of SQLite.
- Understand relational database concepts
- Normalization and many-to-many relationships
- Learn about type converters, migrations in Room database.
networking - Android applications use networking libraries such as Retrofit to fetch data.
- Nowadays, Retrofit is one of the famous libraries for making network calls.
- Learn to create GET and POST requests and handle complex data models
- Understand many concepts related to networking such as Multipart, Interceptors for uploading images.
MVVM, MVC and MVP - Learn to build login, feed, post creation, and profile pages using MVVM architecture with Architecture Components, LiveData, ViewModel, ViewModelFactory, Dagger, Retrofit, RxJava.
- Understand MVC, MVP and MVVM architectures.
- How do ViewModel, ViewModelProviders, and ViewModelProviderFactory work?
- Build functionality like capturing image through camera, selecting image through gallery
- Use Multipart to upload images.
- The principle of life cycle awareness RecyclerView
- Lifecycle Aware RecyclerView ViewHolder Implementation: Average developers ignore this. Good developers consider all edge cases when developing Android applications.
- Implementing paging functionality using RxJava
Unit Testing - Testing is a software development process in which we do a lot of different things to find bugs. The less the number of bugs, the better the chances of that particular software performing well in production.
- It forces you to follow the architecture in your codebase, helps detect failures quickly during the development cycle, and helps you do safer code refactoring, allowing you to optimize your code without worrying about regressions.
Kotlin coroutines - What exactly is a coroutine?
- Need a solution provided by Kotlin Coroutines
- scheduler, suspend, start, async
- What is scope in Kotlin coroutines?
- Exception handling in Kotlin coroutines
Android build system and memory management - Understanding the Android Build system and memory management is very important for Android developers.
- It will help you build Android applications that consume less memory
- Still cracking interviews at top companies.
Android Multithreading and Handler-Looper - Understanding multithreading will help you perform tasks in the background efficiently.
- Android Looper, Handler and HandlerThread are the building blocks of Android OS. So this is one of the most asked topics in interviews.
- Multithreading and Handler-Looper are very important for interviews.
Network cache interceptor image loading - Understanding the internal structure and source code of a third-party library is important to make full use of it.
- Furthermore, these concepts will give you an edge over other candidates during interviews.
If you have no problems with the above, then you have already achieved: - Ability to build powerfully architected Android applications.
- Find a good job in Android field.
|