Android App Development and It's Features

Dec, 2020 - by CMI

Android App Development and It's Features

Android Application

Android is a Linux-based, open source operating system for mobile devices such as tablet computers and smartphones. Android was developed by the Open Handset Alliance, led by Google, and other companies. Android App is a software designed to run on an emulator or Android device. The term also refers to an APK file which stands for Android package. There are three different types of mobile apps, Web apps, Native apps and Hybrid apps. Native apps are created for single oriented OS or platform. Web apps are the responsive versions of websites and accessible using a web browser. Web apps can work on any mobile device or OS because they are delivered using a mobile browser and hybrid apps include both native and web apps, but wrapped within a native app, giving it the ability to have its own icon or be downloaded from an app store. Android provides a rich application framework that allows one to build innovative games and apps for mobile devices in a Java language environment. Android apps can be written in Java, Kotlin, and C++ and are run inside Virtual Machine (VM). The Android SDK tools compile code along with any data and resource files into an APK, an Android package, which is an archive file with an .apk suffix. One APK file contains all the contents of an Android app and is the file that Android-powered devices use to install the app.

Each Android app lives in its own security isolated testing environment, secured by the following Android security features, such as

  • The Android operating system is a multi-user Linux system in which each app is a different user.
  • By default, the system assigns each app a unique Linux user ID (the ID is used only by the system and is unknown to the app). Only the user ID assigned to that app can access them as the system sets permissions for all the files in an app.
  • An app's code runs in isolation from other apps because every process has its own virtual machine (VM).
  • Each app runs in its own Linux process by default. When any of the app's components need to be executed, the Android system starts the process, and then shuts down the process when the system must recover memory for other apps or when it's no longer needed.

 

Android Version Name Android Version Number

 API Level

Android 11

11

 

Android 10

10

 

Pie

9

 

Oreo

8.0-8.1

26-27

Nougat

7.0 – 7.1.2

24-25
Marshmallow

6.0

23

Lollipop 5.0 21
KitKat 4.4 19
Jelly Bean 4.1, 4.2 and 4.3 16, 17 &18
Icecream Sandwich 4.0 14
Honeycomb

3.1 & 3.3

12 &13

Gingerbread

2.3

9 & 10

Froyo

2.2

8

Eclair

2.1

7

Donut

1.6

4

Cupcake

1.5

3

 

Android Architecture

Android architecture consists of Linux kernel which is the root of android architecture and is responsible for power management, device drivers, memory management, resource access, and device management. Native Libraries is middleware of android architecture and is responsible for SQLite, browser support, FreeType for font support, Media for playing and video formats and recording audio, etc. This layer consists of libraries such as OpenGL, WebKit, FreeType, Media, SQLite, C runtime library, etc. Next is Android runtime which consists of DVM (Dalvik Virtual Machine) and core libraries that is responsible to run android application. DVM is like JVM but it is optimized for mobile devices. It consumes less memory, multi-threading and provides fast performance. Above Android runtime and Native libraries, there is Application Framework layer that includes Android API’s such as telephony, User Interface (UI), resources, Content Providers (data), locations, and package managers. The Application Framework layer provides many higher-level services to applications in the form of Java classes. Application developers are allowed to make use of these services in their applications. This layer consists of:

  • Resource Manager− provides access to non-code embedded resources such as strings, color settings and user interface layouts.
  • Activity Manager− controls all aspects of the application lifecycle and activity stack.
  • Content Providers− allows applications to publish and share data with other applications.
  • View System− an extensible set of views used to create application user interfaces.
  • Notifications Manager− allows applications to display alerts and notifications to the user.

The uppermost layer is Applications. All applications such as contact, home, settings, browsers, games are using android framework that uses android runtime and libraries. Android runtime and native libraries are using Linux kernel. Furthermore, Application layer is 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.

Core Building Blocks & additional components of Android

  • Activities – this is a class that represents single UI screen and handles the user interaction. It helps the apps to manage and switch the ongoing activity as well as the previous state restored activities. Moreover, it provides a way for apps to implement user flows between each other, and for the system to coordinate these flows. This is an entry point for interacting with the user. For instance, an email app might have multiple activities such as one activity that composes an email, another activity shows a list of emails, another activity shows deleted emails, etc. Each activity is independent of the others although they work together to form a cohesive UI.
  • Services – this handles the background processing associated with an application, there are two types of services, local and remote. Local service is accessed from within the application whereas remote service is accessed remotely from other applications running on the same device.
  • Broadcast Receivers – this are responsible to handle communication between application and Android OS.
  • Content Provider – this are used to share and manage data between application and handle database management.
  • View - this is the UI element such as label, button, text field etc. Anything that is seen on the UI screen is a view.
  • Intent – this is mainly used to invoke components such as launch the activity, start the service, display a web page, broadcast a message, display list of contacts, dial a phone call, etc.
  • Fragment – this represents a portion of UI in an Activity, an activity can display one or more fragments on the screen at the same time.
  • Layout - View hierarchies that control screen format and appearance of the views.
  • xml – this is the configuration file of an application, it contains information about content providers, activities, permissions etc. It is like the web.xml file in Java EE. This file consists of the declared minimum API level required by the app, permissions that app requires such as Wi-Fi, internet, location, storage access, media access, etc., declared software and hardware features used by the app such as bluetooth, camera, multitouch screen, or portrait/landscape mode for any activity. Moreover, API libraries such as Google Maps Library, UI libraries, etc. that app need are linked and declared here. Which activity to be launched first is declared in this file.
  • Android Virtual Device (AVD) -It is used to test the android application without the need for mobile or tablet etc. It can be created in different configurations to emulate different types of real devices.

Features of Android

  • Connectivity - IDEN, GSM/EDGE, CDMA, UMTS, EV-DO, LTE, Bluetooth, Wi-Fi, WiMAX and NFC
  • Storage – SQLite is a light weight data storage process, relational database
  • Beautiful User Interface
  • Messaging – SMS & MMS
  • Media Support - H.264, H.263, MPEG-4 SP, AMR-WB, AMR, AAC, GIF, WAV, JPEG, PNG, MP3, BMP, etc.
  • Web browser
  • Multi-touch, multi-tasking, multi-language
  • Resizable widgets
  • Google Cloud Messaging (GCM)
  • Near-field Communication (NFC) based technology - is a set of communication protocols for communication between two electronic devices over a distance of 4 cm or less. NFCallows you to share small payloads of data between an NFC tag and an Android-powered device, or between two Android-powered devices

Android Activity Life Cycle

There are 7 life cycles in Android; onCreate, onStart, onResume, onPause, onStop, onRestart and onDestroy.

  • onCreate – this is called when the activity is first created
  • onStart – this is called when activity is getting visible to the user
  • onResume – this function is called when activity starts interacting with the user
  • onStop – this function is called when activity is no longer visible to the user
  • onPause – this is called to hold or when activity is not visible to the user
  • onRestart – this is called prior to start, when ongoing activity is stopped
  • onDestroy – this function is called when the activity is been finishing or destroyed by the system.

Android uses SQLite database which is an open-source relational database which is used to perform all the database queries and operations on android device such as manipulating, storing or retrieving data from the database. This is embedded in android by default.

Among Application, various categories are developed by on the android platform, some of them are; Business Application, Communication Application, Multimedia Application, Fun/Entertainment Application, Internet Application, Gaming Application, Security and Utility Application. Some of these applications in the market are Google Drive, Weather, Google assistant, Google Maps, Youtube, Google Pay, Paytm, CandyCrush, Safari, etc.