2. Introduction
What is Android?
• A software platform and operating system for mobile devices
• Based on the Linux kernel
• Developed by Google and later the Open Handset Alliance (OHA)
• Allows writing managed code in the Java language
• Possibility to write applications in other languages and compiling it to
native code.
• At least 150,000 Application available in Android.
• It run on java based and object- Oriented based application
3. Android History
•Android Inc was founded in Oct 2003 by Andy
Rubin, Nick Sears, Chris White and Rich Miner.
•Google acquired it in august 2005.
•On November 5, 2007, the Open Handset
Alliance, a consortium of several companies which
include Broadcom Corporation, Google, HTC,
Intel, T-Mobile and Texas Instruments unveiled
itself.
4. What is the Open Handset Alliance (OHA)?
• Devoted to advancing open standards for mobile devices
• Develop technologies that will significantly lower the cost of developing and
distributing mobile devices and services.
License
Android is under of the Apache Software License (ASL).
5. What is the Open Handset Alliance (OHA)?
→ It's a consortium of several companies
9. Linux Kernel
•Android is built on LINUX kernel, but it is not the
LINUX.
•No native windowing system(X window system)
•No glibc support
•Does not support all set of standard GNU
libraries
10. Why LINUX?
• Great memory and process management
• Great permissions based security model
• Proven driver model
• Support for shared libraries
• It’s already open source
11. • Power Management
Based on the standard Linux Power Management,
Android has its own component.
•Application uses user space library to inform the
framework about its constrains..
•Constraints are implemented using lock
mechanism..
12. PARTIAL_WAKE_LOCK
• CPU on, screen off, keyboard off
• Cannot power down via power button
SCREEN_DIM_WAKE_LOCK
• CPU on, screen dim, keyboard off
SCREEN_BRIGHT_WAKE_LOCK
• CPU on, screen bright, keyboard off
FULL_WAKE_LOCK
• CPU on, screen on, keyboard bright
13. Binder
•Driver to facilitate inter-process communication between applications
and services..
• A pool of threads is associated to each application to process
incoming IPC
•The driver performs mapping off object between two processes
•“Binder” uses an object reference as an address in a process’s memory
space
14. Libraries
• Media Libraries - based on PacketVideo's OpenCORE;
the libraries support playback and recording of many
popular audio and video formats, as well as static
image files, including MPEG4, H.264, MP3, AAC,
AMR, JPG, and PNG
• LibWebCore - a modern web browser engine
which powers both the Android browser and an
embeddable web view
15. • SGL - the underlying 2D graphics engine
• 3D libraries - an implementation based on
OpenGL ES 1.0 APIs; the libraries use either
hardware 3D acceleration (where available) or
the included, highly optimized 3D software
rasterizer
• FreeType - bitmap and vector font rendering
• SQLite - a powerful and lightweight relational
database engine available to all applications
16. Surface manager
Provides a system-wide surface “composer” to render
all the surfaces in a frame buffer
•Can combined 2D and 3D surfaces
•Can use OpenGL ES and 2D hardware accelerator for its
compositions
17. Audio Manager
•Handle several types of devices (headphone,
ear piece…)
•Redirects audio stream to the specified output
18. Hardware Abstraction Libraries
Defines the interface that Android requires
hardware “drivers” to implement.
•Set of standardized APIs the developer will have to
implement
•Available for all the components a manufacturer can
integrate on its Android platform
19. Android Runtime
Dalvik VM
• Designed for embedded environment
• Supports multiple VM processes
per device.
• Highly CPU-optimized byte code
interpreter.
• Uses run time memory very efficiently.
• Run optimized file format(.dex) Dalvik bytecode.
• Java .class/.jar are converted to .dex at build time.
20. Core Libraries
• Android includes a set of core libraries that
provides most of the functionality available in
the core libraries of the Java programming
language
21. Application Framework
•A Notification Manager that enables all
applications to display custom alerts in the status
bar
•An Activity Manager that manages the lifecycle of
applications and provides a common navigation
backstack
22. • A rich and extensible set of Views that can be used
to build an application, including lists, grids, text
boxes, buttons, and even an embeddable web
browser
• Content Providers that enable applications to access
data from other applications (such as Contacts), or to
share their own data
• A Resource Manager providing access to non-code
resources such as localized strings, graphics, and
layout files
24. Application Lifecycle
• In android every application runs in their
own process.
• Processes are started or stopped as needed
to run application components.
• A process may be killed to reclaim resources.
25.
26.
27.
28.
29.
30.
31.
32. Android Startup
•Similar to most Linux-based systems at
startup, the boot-loader loads the Linux
kernel and starts the init process
33. Init starts Linux daemons, including:
• USB Daemon (usbd) to manage USB
connections
• Android Debug Bridge (adbd) to manage ADB
connections
• Debugger Daemon (debuggerd) to manage
debug processes requests (dump memory,
etc.)
• Radio Interface Layer Daemon (rild) to
manage communication with the radio Init
usbd
34. Init process starts the zygote process:
• A nascent process which initializes a Dalvik VM
instance
• Loads classes and listens on socket for requests to
spawn VMs
• Forks on request to create VM instances for
managed processes
• Copy-on-write to maximize re-use and minimize
footprint
35. •Init starts runtime process:
• Initializes Service Manager – the context manager
for Binder that handles service registration and
lookup
• Registers Service Manager as default context
manager for Binder services
37. Runtime process sends request for Zygote to start
System Server
• Zygote forks a new VM instance for the System
Service process and starts the service
38. System Service starts the native system
servers, including:
• Surface Flinger
` • Audio Flinger
49. • onCreate(Bundle): This is called when the activity first
starts up.
•onStart( ): This indicates the activity is about to be
displayed to the user.
• onResume( ): This is called when your activity can start
interacting with the user. This is a good place to start
animations and music.
• onPause( ): This runs when the activity is about to go
into the background, usually because another activity has
been launched in front of it. This is where you should save
your program’s persistent
state, such as a database record being edited.
50. • onStop( ): This is called when your activity is no longer
visible to the user and it won’t be needed for a while. If
memory is tight, onStop( ) may never be called (the system
may simply terminate your process).
• onRestart( ): If this method is called, it indicates your
activity is being redisplayed to the user from a stopped state.
• onDestroy( ): This is called right before your activity is
destroyed. If memory is tight, onDestroy( ) may never be
called (the system may simply terminate your process).
.
51. •onSaveInstanceState(Bundle): Android will call this
method to allow the activity to save per-instance state,
such as a cursor position within a text field. Usually you
won’t need to override it because the default
implementation saves the state for all your user interface
controls automatically.
• onRestoreInstanceState(Bundle): This is called when
the activity is being reinitialized from a state previously
saved by the onSaveInstanceState( ) method. The default
implementation restores the state of your user interface.
54. • The Apple iPhone comes with an expansive set of applications,
available for free or for a small fee; the Google Android comes with a
smaller package of applications.
• The Apple iPhone comes with a feature to alert the user of any
missed instances, though this feature forces the user to prematurely
end whatever action he is performing; the Google Android comes with
a drag and drop screen that alerts the user of any occurrences ,but
allows him to continue his actions.
• Apple controls all of its hardware, and it is therefore simple to perform
the necessary accessory maintenance; Google’s Android is simply a
platform that functions on different platforms, and doesn’t allow for
easy accessory support.
56. 1. Android is fairly new and has a smaller market share
than the older Symbian
3. Android is designed around touch capable devices while
Symbian is designed around keypad devices
5. Symbian is somewhat outdated while Android is
constantly updated
7. Android is used by many phone manufacturers while
Symbian is almost exclusive to Nokia.
58. 1. Android smartphones are more apps-centered while
BlackBerry smartphones cater more to business.
2. BlackBerry has a good security system while the
Android’s is questionable.
3. Android has plenty of apps that appeal to the geekier
nature while BlackBerry was created for the business
people in the corporate world.
4. BlackBerry was the pioneering smartphone. Android
just followed through.
5. BlackBerry was first in email transferring while Android
was the first in customizing.
59.
60. 1. Windows Mobile is from Microsoft while Android was
developed by Google.
2. Windows Mobile is proprietary while Android is open
source.
3. Windows Mobile is relatively old and pretty established
while the Android is pretty new.
4. There are a lot of phones that uses Windows Mobile
while there are only a handful running Android.
5. There are a lot more programs available for Windows
Mobile compared to Android.
64. Activities
•Activity is an User Interface Screen.
•An application may have two or more activities to
handle different phases of program.
For e.g. opening page, menu page, etc
•Activity is responsible for saving its own state so
that it can be restored later as part of the
application life cycle.
65. Intents
•Intent is a mechanism for describing a specific action
such as pick a photo.
•Basically we register a activity to handle a Intent.
Content Provider
•A content provider is a set of data wrapped up in a
custom API to read and write it. This is the best way
to share global data between applications.
•Google provide content provider for contacts.
66. Services
•A service is a task that runs in the background without
the user’s direct interaction, similar to a Unix daemon.
For e.g. we can have Music player program playing in
background even if we are browsing other programs.
Particular mail(message) is opened from inbox. Mail’s state is saved.
By following link in mail we open it and browser application get started. Message state is saved.
Now we want to start another map process but memory is full, so one process need to be killed from system process as Browser is recently opened process and we need home process for navigation. Mail process is best choice to kill. So we kill it and save Browser process state.
Map process get started.
When we go back mail process again created through instance saved in system process.
kernel the kernel boots core kernel initialization memory and I/O areas are initialized interrupts are started, and the process table is initialized driver initialization kernel daemons (threads) are started root file system is mounted the first user-space process is started usually /init (note that other Linux systems usually start /sbin/init)
/init processes /init.rc and /init.<machine_name>.rc dalvik VM is started (zygote). See Android Zygote Startup several daemons are started: 1-rild - radio interface link daemon 2-vold - volume daemon (media volumes, as in file systems - nothing to do with audio volume) ADB ADB (Android Debug Bridge) is a tool that comes with the Android SDK that allows you to control and interface with your Android device. It is located in the tools folder when you unpack the SDK.
1- init runs the C++ program /system/bin/app_process, and gives the resulting process the name &quot;zygote&quot;