1.Java Foundation
A lot of friends start learning Android as soon as they get started, it seems too anxious some. Android application development is based on the Java language, so there is no solid basic knowledge of Java, just mechanical copy of other people's Code, there is no meaning. So what is the extent of Java learning to be a cross-border? I personally think that at least the following two aspects should be mastered:
A) Java basic syntax: A list of specific knowledge points can be downloaded here: Java knowledge Point list V1.0. This part of the content is not negotiable, must be done in the chest. As for the specific learning methods, you can read a book or watch video, but the key is to practice more, whether it is the practice of the book or the video inside the practice, all need to be done meticulously;
b) Design pattern: Because of the use of a large number of design patterns in the framework layer of the Android system, without this knowledge, the understanding of Android will be greatly compromised. The type of design pattern is very many, one of all grasp, is unrealistic, must first grasp the object-oriented basic design principles, with these basic principles of support, you can extrapolate. This section can be found in the books "Effective Java" and "agile.software.development:principles,patterns.and.practices".
2.Linux Basic Knowledge
As we all know, the Android system is based on the Linux operating system. During the development process, we also need to use some Linux commands. So that some of the basic knowledge of Linux is necessary (say now the programmer, do not understand Linux are embarrassed to greet others), recommend everyone to see "bird Brother's Private food" this book, written quite good;
3. Database Basics
This is relatively simple, is a deletion and modification of the database operation, you can read this book: "SQL Programming exercises and Solutions"
4. Network protocols
At least two basic protocols need to be learned, the HTTP protocol and the socket Protocol;
5.Android Basic Knowledge
With the above bedding, and then to see Android, is not it felt a lot of ease? As for the basics of learning order, the best way is to follow the order in the Dev Guide in the Android SDK help document, and my Android video tutorial is basically recorded in this order;
6. Server-Side development knowledge
Since many Android applications require server-side support, it is necessary to have some knowledge of server-side development. As for the choice of server-side knowledge to learn, it is more troublesome, because the type of technology is too many:
A) Java EE: This is the ssh-struts+spring+hibernate mentioned in the above email. The advantages of this technology are complete and powerful, have been used for many years, and since everyone is already familiar with Java, then learning ssh seems logical. But using this technique to develop server-side programs is cumbersome. Even some simple functions may require a lot of code and configuration files to implement;
b) PHP: Easy to learn, fast to develop. But we need to learn one more language, whether it is not worth the candle, we must judge by ourselves;
c). NET: This technology has the same features as Java EE, but to master. NET, you need to master C #, which is also a troublesome thing;
d) Ruby on Rails: This is my personal favorite server-side technology, simple, elegant, a few lines of code, can achieve very complex functions, but this requires the knowledge of Ruby language as the basis;
As for which technology to choose, it depends on the judgment of the people.
Dream: To become a professional Android developer, the above knowledge is essential. Looks like a lot, much more horrible. So that's the phrase-"patience, patience is important".
Schedule: Java Knowledge points list:
1 development environment
Java SDK Download and installation
Configuration of environment variables (path and CLASSPATH)
2 Programming Basics:
Identifier naming specification
Java Data types
Operators and expressions
Branch statement (If,switch)
Loop statement (For,while)
Methods for defining functions
2 Object-Oriented basics:
The difference between object-oriented and process-oriented languages
Object-oriented basic thinking (encapsulation)
Methods for defining classes
Relationship of objects and classes
How to create an object
Methods for using member variables and member functions through objects
function of the constructor
Overloading of functions
The role of Static
The role of this
3 Object-oriented advanced:
Object-oriented basic thinking (inheritance)
The role of inheritance
The grammatical characteristics of inheritance
How to use Super
The basic idea of object-oriented (polymorphic)
object's upward transformation and downward transformation
The role of the final keyword
Methods for defining abstract classes and interfaces
Syntax characteristics of interfaces and abstract classes
The position and significance of abstract classes and interfaces in object-oriented programming
Design mode (factory method mode)
Definition of exceptions in Java
Classification of anomalies and their respective characteristics
The processing method of try...catch...finally structure
How to use throw and throws
How to use custom exceptions
Methods for defining inner classes
How to define anonymous inner classes
Common ways to use internal classes
4 Threads:
Basic definitions of threads
Two ways to implement threading in Java (using thread or runnable)
Thread Run status Introduction (Prepare, run, block, die)
Methods for inter-thread communication
Thread synchronization
Thread deadlock
5IO
Basic IO Concepts:
The role of the input stream and the output stream
The classification method of Io stream in Java
How to use common IO classes (File,fileinput,fileoutput,reader,writer and how their subclasses are used)
6 Common class Libraries:
How to use common classes in the class set framework (ARRAYLIST,LINKEDLIST,QUEUE,STACK,HASHSET,HASHMAP)
How to use date-related classes (Data,dataformat,calander)