Professional Documents
Culture Documents
Android
▪ Facebook
▪ Messenger
▪ WhatsApp
WHY DEVELOP FOR ANDROID?
WHY DEVELOP FOR ANDROID?
❖ Linux kernel
▪ Core services (including hardware drivers,
process and memory management,
security, network, and power
management) are handled by a Linux 2.6
kernel. Current Version is 4.x
▪ The kernel also provides an abstraction
layer between the hardware and the
remainder of the stack.
Android Software Stack
❖ Hardware Abstraction Layer (HAL)
▪ Core libraries
Although most Android application development is written
using the Java language, Dalvik is not a Java VM. The
core Android libraries provide most of the functionality
available in the core Java libraries, as well as the Android
specific libraries.
▪ Dalvik VM
Dalvik is a register-based Virtual Machine that’s been
optimized to ensure that a device can run multiple
instances efficiently. It relies on the Linux kernel for
threading and low-level memory management.
Android Software Stack
Some of the major features of ART include
▪ Ahead-of-time (AOT) and just-in-time (JIT)
compilation
▪ Optimized garbage collection (GC)
▪ On Android 9 (API level 28) and higher, conversion
of an app package's Dalvik Executable format
(DEX) files to more compact machine code.
▪ Better debugging support, including a dedicated
sampling profiler, detailed diagnostic exceptions
and crash reporting, and the ability to set watch
points to monitor specific fields
Android Software Stack
❖ Application framework
The entire feature-set of the Android OS is
available to you through APIs written in the
Java language.
These APIs form the building blocks you
need to create Android apps by simplifying
the reuse of core, modular system
components and services, which include the
following:
Android Software Stack
▪ A rich and extensible View System you can use to build an
app’s UI, including lists, grids, text boxes, buttons, and
even an embeddable web browser
▪ A Resource Manager, providing access to non-code
resources such as localized strings, graphics, and layout
files
▪ A Notification Manager that enables all apps to display
custom alerts in the status bar
▪ An Activity Manager that manages the lifecycle of apps and
provides a common navigation back stack
▪ Content Providers that enable apps to access data from
other apps, such as the Contacts app, or to share their own
data
Android Software Stack
❖ Application layer
❖ Views
Used to construct the user interfaces for your
Activities and Fragments.
❖ Notification Manager
Provides a consistent and nonintrusive mechanism
for signaling your users.
❖ Content Providers
Lets your applications share data.
Android Application Architecture
❖ Resource Manager
Enables non-code resources, such as strings and
graphics, to be externalized.
❖ Intents
Provides a mechanism for transferring data
between applications and their components.
Android Libraries
❖ Foreground
❖ Background
❖ Intermittent
❖ Foreground
An application that’s useful only when it’s in the
foreground and is effectively suspended when it’s
not visible. E.g. Games etc.
❖ Background
An application with limited interaction that, apart
from when being configured, spends most of its
lifetime hidden. These applications are less
common, but good examples include call screening
applications, SMS auto-responders, and alarm
clocks.
Types of Android Applications
❖ Intermittent
Most well-designed applications fall into this
category. At one extreme are applications that
expect limited interactivity but do most of their
work in the background.