Hello! We have great news. This month, the basic Android Developer course, as well as the Android Developer Specialization , which includes a whole package of courses, will start in Otus. In this regard, we are sharing with you a useful article, the translation of which is confined to these launches.
2019 is the time to become an Android developer. Taking into account the innovations and the progress that is taking place in the field of Android development, we can say that now is the time to become part of this movement. Recent advances in Kotlin, Android Things and other technologies make Android a priority for a beginner, making it possible to receive relevant information and move forward in a certain direction.
I decided to write this guide after I thought about the fact that in 2017 I myself went the same way. I hope it helps you become the kind of Android developer you want to be.
Let's start with the basics.
Start developing for Android
- Check out the basics of Java on Head First Java ;
- Install Android Studio ;
- Install Kotlin in Android Studio (you can skip this step if you are not set to learn Kotlin this year);
- Check out the Android User Interface and learn more about XML and View components.
When you do this, you will not only have a good development environment for creating applications for Android, but you yourself will be well acquainted with the basics for understanding the general terminology that is used by developers in most tutorials.
Now you can create simple applications and implement new features in them. Feel free to start with an empty workspace. With the help of imagination and skills, you can easily fill it yourself.
When you get enough ideas, the next goal for 2019 is to create a game that will develop you as a developer who creates applications for billions. Now let's move on to the second level!
We are developing as an Android developer
The following list must be completed step by step. It will become a ladder for you, climbing on which you will be able to learn something new, realize yourself and move forward.
All these steps will help you build a solid, professional understanding of the Android ecosystem and prepare you for working with at least 10-15 different types of business cases for Android applications.
If you really want to get an extremely powerful and memorable experience with Android, performance templates will be a good help for you. When you complete the following list of actions, you will not only learn how to use them, but also get acquainted with those that you might miss. Performance templates are an incredible tool in the hands of an Android developer. So, you will need to find out the following when it comes to Android Performance Patterns:
- Asynchronous tasks are useless for processes that run as a result of long or streaming calls. Learn how to use Handlerthread to handle these processes differently;
- Learn to deal with memory leaks;
- Learn how to combine IntentService with multithreading to increase efficiency;
- Examine the Android Service performance patterns to kill services as soon as they run;
- Get acquainted with specific Android hashmap-containers to balance performance and memory when creating applications;
- Learn how to use the memory monitoring tool to observe how allocating affects the performance of your application;
- Optimize your network applications with caching;
- Optimize the frequency of network requests of your application;
- Learn how to deal with leaks view;
- Find out how the garbage collector works;
- Understand how updating the visual properties of your application affects performance;
- Get a deep understanding of vertical sync;
- Understand how the interface correlates in Android and GPU to find out the difficulties that you need to deal with to ensure smooth operation of your application;
- Understand how to create an application that produces 60 fps without losing frames, and also find out how many other applications compete with yours for system resources and develop strategies for processing them;
- Learn how to track GPU performance and improve the rendering of your application;
- Explore strategies that can help you drain your battery less;
- Compete against other developers whose applications are in the best section of the PlayStore and try to improve the launch time. Let's see how far you can go.
- Reduce the size of your application.
Let's rise to the third level!
Delve into memory optimization with Bitmap tools
Learn how to use Glide to process bitmap objects in your Android application. You will encounter problems when processing tons of content in an application that will require extracting images, decoding them, and displaying bitmap objects. If you do not learn how to do it correctly, then your application will not succeed, because users may decide that it is not of high quality.
Please note that now you need to be able to process up to 48 MB bitmap-objects of images from the camera, which today can be issued by the user's camera. They can easily eat all available memory.
Android Architecture Components
One of the most important things that I learned as an Android developer was the ability to implement innovative practices in architectures and their components. As soon as I began to go beyond MVP, MVVM, MVx's, etc., I realized that there was a huge space for innovation around these architectural components.
For example, back in 2017, the BLE (Bluetooth low energy) settings by default did not match the proper level. Understanding that this architectural component can be improved by creating an intermediate service library was a real discovery for me.
So, to understand this topic well, I would suggest that you select the individual architectural components of your application and learn how to optimize them. Here are the ones that come to my mind:
- Data binding
- Lifecycles
- Livedata
- Navigation
- Paging
- Room
- ViewModel
- Workmanager
Become a test professional
You do not want to become one of those developers who, in the event of an error, say "it works fine on my machine," right? So, based on knowledge of your application’s architecture and its optimization, create unit tests (JUnit4), learn how to use Espresso, and focus on code coverage reports that will delight leading developers and VPEs. Think about how these reports can be useful to other developers, testers, managers, or other interested parties and help them deal with critical application performance issues and prioritize.
Remember to automate and reuse tests to the extent possible. This approach will open the way for you to leadership positions.
Reactive programming with RxJava
It goes without saying and most likely that this aspect is the most important in your resume and your professional portfolio. There are many places where you can learn in practice how to work with RxJava. I will recommend the following sources:
They will serve as a good starting point on the road to mastering RxJava and its aspects. If you want to know more about RxJava, be sure to check them out and also learn:
- The entire depth of Observables in RxJava;
- Implementation of caching in RxJava.
Learn all about Dagger
The following steps will help you become a pro at Dagger:
- Browse through the documentation and get to the bottom of the dependency injection process;
- Make a list of restrictions;
- Create a project and use Dagger 2 in it.
Become a Security Specialist
Professional Android developer and information security specialist? Wow! This infrequently can combine one person!
And here are a few things you can familiarize yourself with in 2019 to become one:
- Learn how to isolate the data and code of your application from other applications;
- Learn cryptographic functions and implement them;
- Learn to reduce the risks associated with memory management errors;
- Learn how to optimally use user permissions to manage application data;
- Securely store and encrypt data in: local storage, on-the-fly or in the cloud;
- Become a professional in content providers to ensure secure access;
- Make sure you hide the data (meaning obfuscation);
- Find out how you can implement your own security solutions that are not part of the main Android stack;
- Audit third-party libraries in order to break them down by the level of vulnerabilities and create a research document for yourself that will help in the future;
- Work to make BLE safer.
On this I will end. I hope this article helps you become a professional Android developer if you start doing this right now in 2019!
That's all. Waiting for your comments!