The Android Learning Path provides a comprehensive analysis of the Android learning process from four stages :Android junior, Intermediate, senior, and senior engineers. Only for Android application development, not for Rom development, reverse engineering, etc. For the convenience of virtual small white for growth character description.

Little White junior engineer’s dream

Xiaobai has never been exposed to Android development before. He has no basic knowledge of programming, data structure and C language. Java syntax is not very good and he does not know Android. First of all, I need to buy an Android introduction book (now it is more recommended to directly watch the video tutorial combined with online tutorial hands-on practice). In order to learn Android faster, I also use my spare time to read a book while following the examples in the book to type code. As a result, I learned this book in 2 weeks. After reading this book, I have a general understanding of Android’s history, structure, code specifications, etc., and can write some simple activities. At this point Android development is very simple and fun in the eyes of the little people, by putting some buttons and text boxes in the XML can do some interface.

Xiaobai began to follow his technical mentor to do demand, some simple small demand is not a problem. Suddenly one day came a demand, the demand for Activity for a button to add an animation effect, small white panic: “have not touched completely, the book does not say, how to do?” Xiaobai calm down under the search “Android animation” to open the first few links, suddenly realized, according to the online example to achieve the demand. Later, his tutor told him: “To learn Android well, the official documentation is necessary to read both comprehensive and authoritative.” Then Xiao Bai got the treasure, spent a year to read the guide and training above, and he also copied several small examples.

One day, xiao Bai needs to do an animation related requirements, and search “Android animation”, suddenly he was speechless: “Can’t write every animation to search!” So he started a blog on CSDN to write all the knowledge about animation, so that he would not have to search for animation related code later. What about the fact? I don’t need to search for animation code later, because by writing an animation blog, he has memorized all the details of animation so that he doesn’t have to refer to any documentation anymore!

Later xiaobai also learned to put some trivial inconvenient things on the blog to write the blog above, when forgotten within 10 seconds can quickly find back, rather than spend 10 minutes to search again. Summary: When getting started with Android, you need to have a primer book (or video tutorial), learn the content of the book well, and spend a year to read the training and Guide in the official Android documentation. At the same time, write a blog and take notes to make a summary. It is suggested to make each blog of your own valuable. Through one year’s study, I believe everyone can reach the level of intermediate engineer.

  • Training, guideAndroid, and Java API download addresses in the official Android documentation

Technical requirements:

  • Basic knowledge such as how to use the four components, how to create a Service, how to layout, simple custom View, animation and other common techniques
  • Recommended books: First Line of Code Android, Crazy Android

Progress to intermediate engineer

Xiao Bai finally became an Android intermediate engineer after one year of hard study. As an intermediate engineer, he has been able to do a lot of physical work in the company, but xiao Bai cannot undertake some important tasks alone. At this time, Xiao Bai needs to learn a lot, as shown below:

  • AIDL: familiar with AIDL, understand how it works, understand the difference between Transact and onTransact;
  • Binder: General understanding of how Binder works from the Java layer and how to use Parcel objects
  • Multi-process: Familiar with the running mechanism of multi-process, Messenger, Socket, etc.
  • Event distribution: elastic sliding, sliding conflict, etc.
  • Play with View: Drawing principle of View, various custom View;
  • Animation series: Familiar with the difference between View animation and attribute animation, understand the working principle of attribute animation;
  • Familiar with performance optimization and mat tools
  • Understand common design patterns

Learning methods

Reading advanced books, reading Android source code, reading official documents and trying to write relevant technical articles requires some technical depth and self-thinking. In the learning process of this stage, there are two points that are more confusing to everyone, one is reading the source code, the other is custom View and sliding conflict. How to read the source code? This is a headache, but the source code must be read. When reading the source code, don’t get bogged down in the details of the code, focus on the flow of the code and try to dig out useful conclusions for application layer development. In addition, carefully read the source code of a class or method of the comments, when you do not understand the source code, the source code of the comments can help you better understand the working principle of the source code, although the process is difficult, but there is no other way. How do you play with custom Views? We need to see through the phenomenon to see the essence, more to pay attention to the knowledge points needed to customize the view:

  • Understand how views slide
  • Figure out how to do elastic sliding
  • Understand sliding conflicts in views
  • Understand view measure, layout and draw
  • Then we’ll look at a few examples of existing custom views
  • Finally, you can fix the custom view. It takes 1-2 years to reach the technical level of senior engineers. I personally think Android Art Quest and Android Legend can shorten the process to 0.5-1 years. Note that achieving the technical level of senior engineer does not mean that you can become a senior engineer immediately (depending on opportunities and whether you change jobs or not), but once the technical level is reached, it is simply a matter of becoming a senior engineer.

Technical requirements:

  • A little deeper into AIDL, Messenger, Binder, multiprocess, animation, sliding collisions, custom Views, message queues, and more
  • Book recommendation “Android Development Art Exploration” Click to download the electronic PDF, Android Group English Biography

Dream senior engineer

Xiaobai became a senior engineer of his dreams. At this time xiaobai’s Android level is already good, but xiaobai’s target is senior engineer, xiaobai heard that senior engineer’s monthly salary can reach 30K +. There are many more things you need to learn in order to become an Android senior engineer, and some of them are not that specific, as shown below:

  • Continue to understand what is defined in “a little deeper”
  • Understand the system core mechanism:
  • Learn about the SystemServer startup process
  • Understand the message loop model for the main thread
  • Understand how AMS and PMS work
  • Answer the question “How many Windows does an application have? “
  • Understand the general workflow of the four components

The details of the basic knowledge

  • The mode in which the Activity starts and how the different activities behave when exceptions occur
  • Service onBind and onReBind
  • OnServiceDisconnected (ComponentName className) versus binderDied()
  • Details of how AsyncTask behaves on different versions
  • Thread pool details and parameter configuration
  • Familiar with design patterns and architecture awareness

Learning methods

At this time there is no too specific learning methods, nothing more than reading, looking at the source code and do projects, usually a variety of summary, as far as possible to integrate knowledge into the formation of a systematic feeling. At the same time, this stage has certain requirements for architecture, architecture is abstract, but design mode is concrete, so we must strengthen the study of design mode. About the study of design pattern, recommend “Android source code design pattern analysis and combat”, can learn the design pattern, and may realize the design ideas of Android source code.

Technical requirements:

  • A little bit deeper
  • System core Mechanism
  • The details of the basic knowledge
  • Design patterns and architecture
  • Books recommended “Android development art Exploration” click download electronic PDF, “Android source code design mode analysis and combat”, “Android kernel analysis”

Android Senior Engineer

Learn more about architecture issues of different businesses, design principles of kernel source code, organize and open source their own components

conclusion

To this small white story on the end of you and I have the same new harvest?

The progression can be divided into three steps:

Share with you

I want to work my way up

Fly forward on the blades at the highest point

Let the wind blow dry tears and sweat

I want to work my way up

Waiting for the sun to watch its face

Little days have big dreams

I have my day

Let the wind blow dry tears and sweat

One day I will have my day