Android provides the strong foundation for building application that can run on wide range of devices such as smartphones, tablets, watches etc.
Android Architecture Components work together to implement the same app architecture, while they individually address developer pain points. The components help you:
1. Manage your activity and fragment lifecycles automatically to avoid memory and resource leaks
2. Persists Java data objects to an SQLite database.
All the android application occurs at the top layer. Applications are installed and written on this layer only. Some of the examples include Browser, Games, etc.
The Linux Kernal
The basic foundation of Android is Linux kernel. For example, the Android runtime relies on the Linux kernel for underlying functionalities such as threading and low-level memory management.
Using a Linux kernel Android takes advantage of key security features and allows device manufacturers to develop hardware drivers for a well-known kernel.
Hardware Abstraction Layer (HAL)
Hardware abstraction layer provides access to hardware component at the abstract level rather than the detailed hardware level. In Android, HAL allows access to the various hardware component such Bluetooth, camera, sensors etc. It allows you to implement the functionality of these components without affecting the higher level components.
Java API Framework
There are lots of features-set available to the user through the use of various API’s written in Java. These APIs form the building blocks to develop the Android application simplifying the reuse of core, modular system components, and services which include the content provider, resource manager, notification manager.
For devices running on API level 21 and above each app runs on its own instance of ART and on its own process. It becomes easy to run multiple virtual machines on low-memory devices by executing DEX files. DEX is basically a bytecode format designed especially for Android that is optimized for minimal memory footprint.
Some of the major features of ART include the following:
- • Ahead-of-time (AOT) and just-in-time (JIT) compilation
- • Garbage collection (GC)
- • Better debugging support, detailed information on diagnostic exceptions and crash reports.
Native C/C++ libraries
There includes lots of Android components and services, which includes ART and HAL, which are built from native code and which requires the use of native libraries written in C and C++. If the requirement of the app you are developing require the use of C/C++ code you can use Android NDK to Access some of these native android libraries directly from your native code.