Programming Mobile Applications for Android Handheld Systems: Part 1 - Coursera - University Of Maryland - Week 1

Programming Mobile Applications for Android Handheld Systems: Part 1

University of Maryland


1. Mr. Adam Porter - Prof of Computer Science, University of Maryland is the course instructor.

2. Linux Kenrle Layer is the lowest level of software layer int he android platform. This layer provides the core services that any android device will rely on. It provides generic OS services like:
    Memory & Process Management.
    File & Network I/O
    Device Drivers

It also has android specific kernels like:

    Power Management
    Android Shared memory.
    Low memory killer.
    Interprocess communications etc.

3. The layer on top of Linux Kernel is a system of libraries written in C and C++. These libraries are referred to as NATIVE LIBRARIES.These libraries handle core performance sensitive activities.

    Open GL (Graphics)
    SQLite (RElational Database)
    Media Framework (For Audio and Video)

4. ANDROID RUNTIME supports writing and running android applications.

    CORE JAVA LIBRARIES: Android provides a number of core JAVA libraries as building blocks for building applications, as android applications are written in JAVA.

    DARVIK VIRTUAL MACHINE is actually the software that executes android applications.


    App is written JAVA.

    It is then compiled to JAVA BYTECODE file.

    DX converts JAVA bytcode files to a single DEX bytecode file(Classes.Dex)

    Dalvik executes DEX bytecode file.

    DALVIK VIRTUAL MACHINE was originally designed for the resources constrained environment of a mobile device. (ha ha ha)

 6. The layer on top of the system libraries is the APPLICATION FRAMEWORK layer which contains many re-usable software that many android applications are likely to use.

     PACKAGE MANAGER: Keeps track of all the apps currently installed on the device.

         Allows applications ot find and contact each other to share data or to request services from another.

     WINDOW MANAGER: Manages the windows comprising of an app.

     VIEW SYSTEM: Provides many common graphic user interface elements.

         Eg: Icons, Text-Entry Boxes, Buttons

     RESOURCE MANAGER: Manages, the non-compiled resources.

         Eg: Strings, Graphics and layouts.

     ACTIVITY MANAGER: Manages app lifecycle and navigation stack.

         Applications are made through multiple activities through which a user can navigate through the applications. Activity manager helps in managing those activities.

     CONTENT PROVIDER: Content providers are essentially structured databases that allow to store and share the data. They are designed to work cross application.

     LOCATION MANAGER: Provides location and movement information.

     NOTIFICATION MANAGER: Place notification icon in the notification bar.

 7. APPLICATIONS LAYER is the top-most layer. The built-in app which comes with android. None of these are hard-coded and hence, if one has a better substitute app, then they can be used in lieu of these apps.