The demand for Android developers is great now. I decided to prepare a list of what each developer needs to know for this platform. This is not only what you may be asked to do during the follow-up, but the whole range of knowledge that is most likely useful in work. The bonus is a couple of interesting questions about the platform.
Android platform:
File AndroidManifest.xml : why do I need the necessary parameters section. Here you need to tell about the tag <manifest> and <application> , tell about the packageName parameter, about <uses-feature> and <uses-permission>, about application components that are specified.
Project structure: assets, res, src, gen, libs. What is in each folder, what should be under version control, and what is not (the gen folder is never put into VCS). Respectively, assets, resources (pictures, music, layouts), java-code, generated code, libraries.
Components of the application. Activity , Service , BroadcastReceiver , ContentProvider . Why do we need each, how is work done, the lifecycle of each component.
Features launch Activity and Service . What is Task , Activity Stack . How is the decision to start the Service process made?
ContentProvider , why you need it, how it is used. Access and use ContentResolver . Work with cursors. Remember about managed cursors.
BroadcastReceiver : static and dynamic, call mechanisms, lifecycle.
Interprocess communication. What is the Intent and why? How to transmit information with its help, what the Bundle and why Parcelable needed. IntentFilter and what is applied. Ways of interaction Activity and Service (start, binding). AIDL (Android interface definiotn language).
Build UI applications. What is Layout and View , what are the types of layouts (4 pieces), why do they apply. Optimization of UI for various screen sizes and pixel density (using dp).
Data storage in the platform: 4 types. Internal, External Storage, DB, SharedPreferences. Options for use, differences.
Localization. Built-in platform tools for localization, moments of locale selection.
Widgets The mechanism for creating widgets available UI tools in them. What is AppWidgetProvider .
Work in the background. When to use Service , when AsyncTask . What is AsyncTask , its connection to the UI. Entity IntentService - what does and how useful.
Security Model in Android. Permissions
Using telephone tools: sensors, vibration, GPS.
New platforms: Loaders , Fragments , In-app billing.
Performance in the platform: best practices. Non-use of enums to 2.2, use of final, and so on. Feature of work on the mobile: limited memory and process.
Support for older versions of the platform: access to functionality through Reflection.
Own views: rendering mechanisms, Canvas.
Component states: which components of the system can save states (Activity and View), ways of saving and restoring states, differences in mechanisms for Activity and View.
')
As a bonus, it is useful to know:
Application signing mechanisms for publishing to the Android Market.
Android NDK: Call Native Code
Development frameworks for various mobile OS: Titanium, PhoneGap and others.
Core java. All that is necessary for an ordinary java-developer.
Inheritance in java, interfaces, abstract classes, classes, internal and anonymous. Multiple inheritance of interfaces when applied. Closures
Modifiers in java: access, synchronization, other (static and final). The impact of final performance.
Collections: collection types ( List , Set , Map ). Various implementations, the applicability of collections in certain cases. The complexity of inserting, reading and searching in various implementations.
Multithreading: threads, synchronization methods, wait and notify methods. The keyword is synchronized when used, which means.
Differences library classes Java SE and the Android platform.
Some interesting questions about the platform:
1. There is Task 1, Task 2. In the first there is Activity A, on top is Activity B. Task 2 sends intent to launch Activity A, while A has a launch type = “singleTask” in the manifest. What happens to Task 1? What will the Activity stack look like in Task 1? What happens when you press the Back button a few times?
2. There is a service that was launched through binding with the Activity. What happens to the service when the user leaves the relevant Activity? What needs to be done to change this behavior?
3. Inside the Activity, a BroadcastReceiver defined as a non-static internal class. Can such a receiver receive intents? Why?