The Ultimate Guide to Learning Android Development

The Ultimate Guide to Learning Android Development

Related Articles:

Amazing! Complete Source Code for 74 Apps!

Major Update! Android Studio 2.3 Official Release, Comprehensive Summary of New Features

MVP+Dagger2+Rxjava+Retrofit+GreenDao Small Application, Including Three Major Modules: News, Images, and Videos, Clean and Efficient Code

Summary: A summary of the Android learning path, absolutely useful content. Unknowingly, I have been developing for several years. I remember when I first started working, I felt I was amazing, but looking back now, I feel so ignorant.

1. Introduction

Unknowingly, I have been developing for several years. I remember when I first started working, I felt I was amazing, but looking back now, I feel so ignorant. The more you know, the more you realize how little you know.

If your knowledge is a circle, the larger your circle, the larger the world outside the circle.

Recently, I have seen many Android beginners asking about the Android learning path, learning methods, and how to get started. Therefore, I found some information online and summarized it based on my work experience to help you avoid detours and extract some commonly used technologies in the workplace.

2. Summary of Knowledge to Learn

1. Java SE Basics

1). Basic data types and expressions in Java, branching and looping. 2). Usage of String and StringBuffer, regular expressions. 3). Object-oriented abstraction, encapsulation, inheritance, polymorphism, classes and objects, object initialization and garbage collection; constructors, the ‘this’ keyword, methods and the process of passing method parameters, the ‘static’ keyword, inner classes. 4). Object instantiation process, method overriding, the ‘final’ keyword, abstract classes, interfaces, analysis of the advantages and disadvantages of inheritance; polymorphism of objects: conversion between subclasses and parent classes, application of abstract classes and interfaces in polymorphism, benefits brought by polymorphism. 5). Java exception handling, principles of exception mechanisms. 6). Common design patterns: Singleton, Template, Strategy patterns. 7). Introduction to Java API: basic data type wrapper classes, System and Runtime classes, Date and DateFormat classes, etc. 8). Introduction to Java collections: Collection, Set, List, ArrayList, LinkedList, HashSet, Map, HashMap, Iterator, and other commonly used collection class APIs. 9). Java I/O input and output streams: File and FileRandomAccess classes, byte streams InputStream and OutputStream, character streams Reader and Writer, and their respective implementation classes, I/O performance analysis, conversion streams of bytes and characters, the concept of wrapper streams, and commonly used wrapper classes, computer encoding. 10). Advanced Java features: reflection and generics. 11). Principles of multithreading: how to create multithreading in programs (Thread, Runnable), thread safety issues, thread synchronization, communication between threads, deadlocks.

2. Android UI Programming

1) Setting up the Android development environment: Introduction to Android, setting up the Android development environment, the first Android application, directory structure of an Android application.

2) Usage of basic Android controls:

Usage of TextView control, usage of Button control, usage of EditText control, usage of ImageView, usage of RadioButton, usage of Checkbox, usage of Menu.

3) Usage of advanced Android controls:

Usage of ListView, usage of GridView, usage of Adapter, usage of Spinner, usage of Gallery, usage of ScrollView, usage of RecyclerView.

4) Usage of dialogs and menus:

Basic concept of Dialog, usage of AlertDialog, usage of DatePickerDialog, usage of Menu, implementation of custom Menu.

5). Control layout methods:

Usage of Linear Layout, usage of Relative Layout.

6). Multi-Activity management:

Role of AndroidManifest.xml file, usage of Intent, methods for passing data using Intent, methods for launching Activity, usage of IntentFilter, usage of Activity Group.

7) Implementation methods of custom controls:

Implementation methods of custom ListView, usage of collapsible ListView, implementation methods of custom Adapter, implementation methods of custom View, implementation of dynamic control layout, pull-to-refresh and load more.

3. Android Network Programming and Data Storage

1). HTTP communication based on the Android platform:

Review of HTTP protocol, methods for submitting data to the server using GET, implementation methods for submitting data to the server using POST, using the HTTP protocol to implement multithreaded downloads, using the HTTP protocol to implement breakpoint resume.

2). Android data storage technologies:

Introduction to SQLite3 database, review of SQL statements, introduction to SQLite3 programming interface, SQLite3 transaction management, usage of SQLite3 cursors, performance analysis of SQLite3, methods for accessing SDCard, methods for accessing SharedPreferences.

Reference from:http://www.cnblogs.com/zhuawang/p/3672228.html

3. The Path to Advancement (Junior -> Intermediate -> Senior)

1. Junior Engineer

Before, Xiao Ming had no contact with Android development and was a fresh graduate with a salary of 13k. Then Xiao Ming entered Baidu as a campus recruit, so how should Xiao Ming learn to become a junior engineer? At this time, Xiao Ming had a certain foundation in programming basics, data structures, and C language, and he was also quite good at Java syntax, but unfortunately, he didn’t know how to handle Android.

Xiao Ming first needed to buy an introductory book on Android. To learn Android faster, Xiao Ming spent his spare time reading the book and coding examples from it, and as a result, he learned the book in 2 weeks. After finishing this book, Xiao Ming had a general understanding of Android’s history, structure, coding specifications, etc., and he could already write some simple Activities. At this point, Android development seemed very simple and fun to Xiao Ming; by just placing some buttons and text boxes in XML, he could create some interfaces.

Xiao Ming began following his technical mentor to work on requirements; naturally, some simple requirements were not a problem for him. Suddenly one day, a requirement came in that required Xiao Ming to add an animation effect to a button in the Activity. Xiao Ming panicked: “I have never encountered this before; it wasn’t covered in the book. What should I do?” Xiao Ming calmed down, opened Baidu, searched for “Android animation,” and suddenly understood as he followed examples online to implement the requirement. Later, his mentor told him: “To learn Android well, you must read the official documentation; it is comprehensive and authoritative.” Xiao Ming cherished this advice and spent a year reading through the guides and training on the official documentation, and he even copied a few small examples by hand.

One day, Xiao Ming needed to work on another animation-related requirement, and this time it was no trouble for him. He skillfully opened www.baidu.com, searched for “Android animation,” and suddenly realized: “I can’t keep searching every time I write animations!” So he opened a blog on CSDN and wrote down all the knowledge points related to animations so that he wouldn’t have to search again when writing animation-related code later. And indeed, after writing a blog post about animations, Xiao Ming no longer needed to search on Baidu for animation-related code because he had memorized all the details by writing that blog. Later, Xiao Ming also learned to write down some inconvenient things that he couldn’t post on his blog in Evernote, making it easy to find them quickly within 10 seconds if he forgot, rather than spending 10 minutes searching again.

To summarize, when starting with Android, you need to have an introductory book, study its content well, and spend a year reviewing the training and guides in the Android official documentation while summarizing through blogging and note-taking. It is advisable to make each blog post valuable. After a year of study, I believe everyone can reach the level of an intermediate engineer.

Technical Requirements:

  • Basic Knowledge Points such as how to use the four main components, how to create a Service, how to layout, simple custom Views, animations, and other common technologies.

  • Recommended Books“Crazy Android”

2. Intermediate Engineer

After a year of hard work, Xiao Ming finally became an intermediate Android engineer with a monthly salary of 17k. As an intermediate engineer, he could handle many physical tasks in the company, but he was still unable to undertake some important tasks alone. At this point, there was a lot for Xiao Ming to learn, as follows:

  • AIDL:Be familiar with AIDL, understand its working principles, and know the difference between transact and onTransact;

  • Binder:Have a general understanding of the working principles of Binder from the Java layer, understand the use of Parcel objects;

  • Multi-process:Be proficient in the operating mechanism of multi-processes, understand Messenger, Socket, etc.;

  • Event Dispatch:Elastic scrolling, scrolling conflicts, etc.;

  • Mastering View:Understanding the drawing principles of View, various custom Views;

  • Animation Series:Be familiar with the differences between View animations and property animations, understand the working principles of property animations;

  • Understand Performance Optimizationand be familiar with tools like MAT;

  • Understand Common Design Patterns

Learning Methods

Read advanced books, read Android source code, read official documentation, and attempt to write related technical articles. This requires a certain depth of technology and self-reflection. During this learning process, two points tend to trouble everyone: one is reading source code, and the other is custom Views and scrolling conflicts.

How to read source code? This is a headache, but source code must be read. When reading source code, do not get lost in the details; focus on the flow of the code and try to extract useful conclusions for application layer development. Also, carefully read the comments on a class or method in the source code. When you don’t understand the source code, the comments can help you better understand the working principles. Although this process is arduous, there is no other way.

How to master custom Views? My suggestion is not to learn custom Views through learning custom Views. Why do I say this? Because there are too many types of custom Views, with all sorts of dazzling custom effects. How do we learn to play with them? We need to see through the phenomenon to understand the essence, focusing more on the knowledge points required for custom Views. Here’s a summary:

  • Understand the scrolling principles of Views

  • Understand how to achieve elastic scrolling

  • Understand scrolling conflicts of Views

  • Understand the measure, layout, and draw processes of Views

  • Then learn a few existing examples of custom Views

  • Finally, you can master custom Views, as the saying goes, “The essence remains the same despite the variations.”

It will take approximately 1-2 more years to reach the technical level of a senior engineer. I personally believe that reading “The Art of Android Development” and “Android Heroes” can shorten this process to 0.5-1 year. Note that reaching the technical level of a senior engineer does not mean that you can immediately become a senior engineer (due to opportunities and whether to change jobs), but once your technology reaches that level, becoming a senior engineer is quite simple.

Technical Requirements:

  • Somewhat In-Depth Knowledge PointsAIDL, Messenger, Binder, Multi-process, Animations, Scrolling Conflicts, Custom Views, Message Queues, etc.

  • Recommended Books“The Art of Android Development”

3. Senior Engineer

Xiao Ming has become the senior engineer he longed for, with a monthly salary of 20k and a bit of stock. At this point, Xiao Ming’s Android skills are quite good, but his goal is to become a senior engineer, and he has heard that senior engineers can earn 30k+.

To become a senior Android engineer, there is much more to learn, and some of it is not so specific, as follows:

  • Continue deepening the understanding of the content defined in “Somewhat In-Depth Knowledge Points”

  • Understand the core mechanisms of the system:

  • Understand the startup process of SystemServer

  • Understand the message loop model of the main thread

  • Understand the working principles of AMS and PMS

  • Be able to answer the question “How many Windows does an application have?”

  • Understand the general workflow of the four main components

    1. Details of Basic Knowledge Points

    2. Activity startup modes and the behavior of different Activities under exceptional circumstances

    3. The relationship between Service’s onBind and onReBind

    4. The difference between onServiceDisconnected(ComponentName className) and binderDied()

    5. Details of AsyncTask in different versions

    6. Details and parameter configuration of thread pools

  • Be familiar with design patterns and have an architectural awareness

At this stage, there are no specific learning methods; it’s just about reading books, reading source code, and doing projects, while frequently summarizing to integrate knowledge into a systematic understanding. Additionally, this stage requires a certain understanding of architecture; architecture is abstract, but design patterns are concrete, so it is essential to strengthen the study of design patterns. Recently, I recommend a new book to everyone, “Analysis and Practice of Android Source Code Design Patterns,” which allows you to learn design patterns while also experiencing the design ideas in Android source code. I have also been reading this book lately.

Technical Requirements:

  • Somewhat In-Depth Knowledge Points

  • Core Mechanisms of the System

  • Details of Basic Knowledge Points

  • Design Patterns and Architecture

  • Recommended Books“The Art of Android Development,” “Analysis and Practice of Android Source Code Design Patterns,” “Analysis of Android Kernel”

Reference from:http://blog.csdn.net/singwhatiwanna/article/details/49560409

4. Learning Videos and Books

Once you have a learning path and know what to learn, you also want to practice after theory. Here, I have organized about 80G of learning videos and books for you. Hurry up and click me to download…

Java and Android Experts Channel

Welcome to follow us, let’s discuss technology together. Scan and long press the QR code below to quickly follow us. or search for WeChat public account: JANiubility.

The Ultimate Guide to Learning Android Development

Public Account:JANiubility

The Ultimate Guide to Learning Android Development

Leave a Comment