Android Basics and Architecture

Published on July 2016 | Categories: Types, Instruction manuals | Downloads: 40 | Comments: 0 | Views: 225
of 13
Download PDF   Embed   Report

Basics of Android programming and Android software architecture.

Comments

Content

Android overview
Android is a mobile operating system development by Google. It is used by several Smartphone such as the Motorola Droid. Samsung Galaxy, and Google’s own Nexus One. The Android Operating System (OS)is based the open Linux Kernel. Unlike the iphone os,Android is open source,meaning developers can modify and customize the os for each phone.Therefore diffenent Android-based phones may have different graphical user interface,even though they use the same os. World is contracting with the growth of mobile phone technology. As the number of users is increasing day by day, facilities are also increasing. Starting with simple regular handsets which were used just for making phone calls, mobiles have changed our lives and have become part of it. Now they are not used just for making calls but they have innumerable uses and can be used as a Camera , Music player, Tablet PC, T.V. , Web browser etc . And with the new technologies, new software and operating systems are required.

 What is Android?
Operating Systems have developed a lot in last 15 years. Starting from black and white phones to recent smart phones or mini computers, mobile OS has come far away. Especially for smart phones, Mobile OS has greatly evolved from Palm OS in 1996 to Windows pocket PC in 2000 then to Blackberry OS and Android. One of the most widely used mobile OS these days is ANDROID. Android is a software bunch comprised not only operating system but also middleware and key applications. The application executes within its own process and its own instance of Dalvik Virtual Machine. Many Virtual Machines run efficiently by a DVM devices.DVM executes java language’s byte code which latter transform into .dex format files.

 Version history of Android operating system
1. Android 1.0 - Release Date: September 23, 2008 2. Android 1.1 - Release Date: February 9, 2009 3. Android 1.5 Cupcake – Release Date: April 30, 2009 4. Android 1.6 Donut - Release Date: September 15, 2009 5. Android 2.0/2.1 Éclair – Release Date: October 26, 2009 6. Android 2.2 FroYo – Release Date: May 20, 2010 7. Android 2.3 Gingerbread - Release Date: December 6, 2010

8. Android 3.0 Honeycomb - Release Date: February 22, 2011 9. Android 4.0 Ice Cream Sandwich - Release Date: October 19, 2011 10. Android 4.1 Jelly Bean - Release Date: July 9, 2012.

 Application Fundamental
Android applications are written in the Java programming language. The android SDK(Software Development Kit)tools compile the code, along with any data and resources file, into an Android package, an archive file with an .apk suffix. All the code is single .apk file is considered to be one application and is the file that Android powered devices use to install the application.

 How install SDK into eclipse?
Step 1::

Step 2::

Step ::3

Dalvik Virtual Machines (DVM):
Dalvik virtual machine (DVM) is a process virtual machine which is part of an open source the Android mobile phone platform based on the Linux operating system and is developed by the OHA (Open Handset Alliance) which is a consortium of companies including Google, HTC (High Tech Computer Corporation-Taiwan), Intel, Motorola, Qualcomm, T-Mobile, and NVIDIA. The DVM was originally developed by Dan Bornstein. The others who contributed along with Dan Bornstein were mainly engineers from Google as part of the Android mobile phone platform. The DVM operates on byte codes that are transformed from the Java Class files compiled by a Java compiler into another class file format called the .dex format using a dx tool which is included in the Android SDK (Software Development Kit). The primary goal of the DVM which is creation of platform neutral dex files is comparable to the Java Virtual Machine (JVM) which processes the Java byte codes while using Java Class files or Jar files. The processes of the DVM are typically optimized for the low memory requirements needed for development and implementation of applications for the mobile phone platform. It is designed to allow multiple VM instances to run at once.

Android Emulator:
The Android SDK includes a mobile device emulator, a virtual mobile device that runs on your computer. The emulator lets you develop and test Android application without using a physical device.

 How create Emulator?
Step:1

Step:2

Step:3

Step:4

Step:5

 Class Overview of Activity
An activity represents the visual representation of an Android application. Activity use views, i.e. user interface widgets as for example buttons and fragments to create the user interface and to interact with the user. An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView (View). While activities are often presented to the user as full-screen windows, they can also be used in other ways: as floating windows (via a theme with windowIsFloating set) or embedded inside of another activity (using Activity Group).

Activity Lifecycle : :-

When we launch an Activity in Android, it first calls the onCreate() method. This is where we do User Interface creation and initialization of data elements. This method is provided with a Bundle object as parameter to restore the UI state.  onStart() method is called before the Activity is being visible to the User. Remember that Activity is still not Active.  With the onResume() method, the Activity become visible and Active for the user to interact with. The Activity will be at the top of the Activity stack at this point. Now the Activity is in running /active state and is able to receive user inputs.  In the Active state, onPause() method will be called when the system is about to resume another Activity on top of this one or when the user is about to navigate to some other other parts of the system. It is the last guaranteed call to a method before the Activity can get killed by the system. That is, there’s a possibility that your activity may be killed by the system at the paused state without executing any further method calls. Therefore it is important to save the user interface configuration and critical data at this method.  By default, an Activity can remain in the paused state if:  The user has pressed the home button  Another activity or notification which is on top of it doesn’t completely obscures the visibility of underlying Activity.  The device goes to sleep.  There are three possibilities for an Activity under paused state: 1. The user resumes the Activity by closing the new Activity or notification and the paused Activity gets Active/Running by calling onResume() method. 2. It gets killed by the system under extremely low memory conditions. In this case there will be no further method calls before the destruction of the Activity and it needs to be re-run from the beginning by calling onCreate() and restoring the previous configuration from bundle object.  In all other cases it goes to stopped state by executing onStop() method. This is the default action when the user has pressed the back button, or a new activity which completely covers it resumes on top.  An Activity under stopped state also has three different scenarios to happen: 1. System kills it to free resources. An activity under stopped sate is more likely to be killed by the system than one in the paused state. It needs to start the cycle again with onCreate(). 2. It get restarted by calling onRestart() , onStart() and onResume() methods in the order if the user navigates back to the Activity again. In this case, the User Interface is intact and no need to be restored. 3. onDestroy() method is called and the Activity is destroyed. This is the final method we can call before the Activity is destroyed. This occurs either because the Activity is finishing the operation or the system is temporarily destroying it to save space..

Android Activity Lifecycle Loops
By analyzing the Android Activity lifecycle diagram we can see there are three lifecycle loops exist for every Activity and are defined by those callback methods.

They are: 1. Entire Lifetime: This is the lifetime between the first call to the onCreate() and the final call to onDestroy() method. We create all global resources such as screen layout, global variables etc in onCreate() and release all resources with onDestroy() call. 2. Visible Lifetime: It is the lifetime of an Activity between onStart() and onStop() method calls. In this the Activity is visible to the user and he may or may not be able to interact with it. During the visible lifetime, an Activity maintains its state intact. 3. Foreground Lifetime: Foreground lifetime starts with onResume() and ends with onPause() method calls. During this, the Activity is completely visible to the user and is on top of all other Activities so that user can interact with it.

 Android Architecture

The above figure shows the diagram of Android Architecture. The Android OS can be referred to as a software stack of different layers, where each layer is a group of several program components. Together it includes operating system, middleware and important applications. Each layer in the architecture provides different services to the layer just above it. We will examine the features of each layer in detail.

Linux Kernel
The basic layer is the Linux kernel. The whole Android OS is built on top of the Linux 2.6 Kernel with some further architectural changes made by Google. It is this Linux that interacts with the hardware and contains all the essential hardware drivers. Drivers are programs that control and communicate with the hardware. For example, consider the Bluetooth function. All devices has a Bluetooth hardware in it. Therefore the kernel must include a Bluetooth driver to communicate with the Bluetooth hardware. The Linux kernel also acts as an abstraction layer between the hardware and other software layers. Android uses the Linux for all its core functionality such as Memory management, process management, networking, security settings etc. As the Android is built on a most popular and proven foundation, it made the porting of Android to variety of hardware, a relatively painless task.

Libraries
The next layer is the Android’s native libraries. It is this layer that enables the device to handle different types of data. These libraries are written in c or c++ language and are specific for a particular hardware. Some of the important native libraries include the following: Surface Manager: It is used for compositing window manager with off-screen buffering. Offscreen buffering means you cant directly draw into the screen, but your drawings go to the offscreen buffer. There it is combined with other drawings and form the final screen the user will see. This off screen buffer is the reason behind the transparency of windows. Media framework: Media framework provides different media codecs allowing the recording and playback of different media formats SQLite: SQLite is the database engine used in android for data storage purposes WebKit: It is the browser engine used to display HTML content OpenGL: Used to render 2D or 3D graphics content to the screen

Android Runtime
Android Runtime consists of Dalvik Virtual machine and Core Java libraries. Dalvik Virtual Machine It is a type of JVM used in android devices to run apps and is optimized for low processing power and low memory environments. Unlike the JVM, the Dalvik Virtual Machine doesn’t run .class files, instead it runs .dex files. .dex files are built from .class file at the time of compilation and provides hifger efficiency in low resource environments. The Dalvik VM allows multiple

instance of Virtual machine to be created simultaneously providing security, isolation, memory management and threading support. It is developed by Dan Bornstein of Google. Core Java Libraries These are different from Java SE and Java ME libraries. However these libraries provides most of the functionalities defined in the Java SE libraries.

Application Framework
These are the blocks that our applications directly interacts with. These programs manage the basic functions of phone like resource management, voice call management etc. As a developer, you just consider these are some basic tools with which we are building our applications. Important blocks of Application framework are: Activity Manager: Manages the activity life cycle of applications Content Providers: Manage the data sharing between applications Telephony Manager: Manages all voice calls. We use telephony manager if we want to access voice calls in our application. Location Manager: Location management, using GPS or cell tower Resource Manager: Manage the various types of resources we use in our Application

Applications
Applications are the top layer in the Android architecture and this is where our applications are gonna fit. Several standard applications comes pre-installed with every device, such as:
   

SMS client app Dialer Web browser Contact manager

As a developer we are able to write an app which replace any existing system app. That is, you are not limited in accessing any particular feature. You are practically limitless and can whatever you want to do with the android (as long as the users of your app permits it). Thus Android is opening endless opportunities to the developer.

 Android Project folder structure

f

SrcUser specified java source code files will be available here. gen
The gen directory in an Android project contains auto generated files. You can see R.java inside this folder which is a generated class which contains references to certain resources of the project. R.java is automatically created by the Eclipse IDE and any manual changes are not necessary

assets
This folder contains raw hierarchy of files and directories, with no other capabilities. It is just an unstructured hierarchy of files, allowing you to put anything you want there and later retrieve as raw byte streams.

res
Android supports resources like images and certain XML configuration files, these can be keep separate from the source code. All these resources should be placed inside the res folder. This res folder will be having sub-folders to keep the resources based on its type.

/res/values
Used to define strings, colors, dimensions, styles and static arrays of strings or integers. By convention each type is stored in a separate file, e.g. strings are defined in the res/values/strings.xml fil /res/layout This folder contains the layouts to be used in the application.A layout resource defines the architecture for the UI in an Activity or a component of a UI. These are resource directories in an application that provides different layout designs for different screen sizes

/res/values
Used to define strings, colors, dimensions, styles and static arrays of strings or integers. By convention each type is stored in a separate file, e.g. strings are defined in the res/values/strings.xml file.

AndroidManifest.xml
All the android applications will have an AndroidManifest.xml file in the root directory. This file will contain essential information about the application to the Android system, information the system must have before it can run any of the application's code. This control file describes the nature of the application and each of its components

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close