Android
Android is an open source linux based operating system for mobile such as smart phones and tablet.Android was developed by google.
Android phones typically come with several built-in applications and also support third-party programs. Developers can create programs for Android using the free Android SDK (Software Developer Kit). Android programs are written in Java and run through Google's "Davlik" virtual machine, which is optimized for mobile devices.
Android Architecture
Android operating system is a stack of software components which is roughly divided into five sections and four main layers
1)Linux kernel
At the bottom of the layers is Linux. This provides a level of abstraction between the device hardware and it contains all the essential hardware drivers like camera, keypad, display etc.
2)Libraries
On top of Linux kernel there is a set of libraries including open-source Web browser engine WebKit, well known library libc, SQLite database which is a useful repository for storage and sharing of application data, libraries to play and record audio and video, SSL libraries responsible for Internet security etc.
3)Android Runtime
This section provides a key component called Dalvik Virtual Machine which is a kind of Java Virtual Machine specially designed and optimized for Android.
The Dalvik VM makes use of Linux core features like memory management and multi-threading, which is intrinsic in the Java language. The Dalvik VM enables every Android application to run in its own process, with its own instance of the Dalvik virtual machine.
The Android runtime also provides a set of core libraries which enable Android application developers to write Android applications using standard Java programming language.
4)Application Framework
The Application Framework layer provides many higher-level services to applications in the form of Java classes.
5)Application
You will find all the Android application at the top layer like Contacts Books, Browser, Games etc.
Application Components
Application components are the essential building blocks of an Android application. These components are loosely coupled by the application manifest file AndroidManifest.xml that describes each component of the application and how they interact.
There are four main components
1)Activities
An activity represents a single screen with a user interface,in-short Activity performs actions on the screen. For example, an email application might have one activity that shows a list of new emails, another activity to compose an email, and another activity for reading emails. If an application has more than one activity, then one of them should be marked as the activity that is presented when the application is launched.
2)Services
A service is a component that runs in the background to perform long-running operations. For example, a service might play music in the background while the user is in a different application, or it might fetch data over the network without blocking user interaction with an activity.
3)Broadcast Receiver
Broadcast Receivers simply respond to broadcast messages from other applications or from the system. For example, applications can also initiate broadcasts to let other applications know that some data has been downloaded to the device and is available for them to use, so this is broadcast receiver who will intercept this communication and will initiate appropriate action.
4)Content Provider
A content provider component supplies data from one application to others on request. Such requests are handled by the methods of the ContentResolverclass. The data may be stored in the file system, the database or somewhere else entirely.
Additional Components
1)Fragments
Represents a portion of user interface in an activity.
2)Views
UI elements that are drawn on-screen including buttons, lists forms etc.
3)Layouts
View hierarchies that control screen format and appearance of the views.
4)Intents
Messages wiring components together.
5)Resources
External elements, such as strings, constants and drawable pictures.
6)Manifest
Configuration file for the application.