SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
Introduction to Android App Development

                           Opersys inc.


                         March 28, 2012




Opersys inc. ()   Introduction to Android App Development   March 28, 2012   1 / 59
These slides are made available to you under a Creative Commons Share-Alike 3.0 license.
The full terms of this license are here: https://creativecommons.org/licenses/by-sa/3.0/

Attribution requirements and misc., PLEASE READ:
    This slide must remain as-is in this specific location (slide #2), everything else you are
    free to change; including the logo :-)
    Use of figures in other documents must feature the below “Originals at” URL
    immediately under that figure and the below copyright notice where appropriate.
    You are free to fill in the space in the below “Delivered and/or customized by” section as
    you see fit.
    You are FORBIDEN from using the default “About me” slide as-is or any of its contents.
(C) Copyright 2010-2012, Opersys inc.
These slides created by: Karim Yaghmour
Originals at: www.opersys.com/training/android-development

Delivered and/or customized by:



       Opersys inc. ()        Introduction to Android App Development     March 28, 2012   2 / 59
About me


About me




   Introduced “Linux Trace Toolkit” in late ’90s
   Originated Adeos and relayfs (kernel/relay.c)
   Training, Custom Dev, Consulting, ...
    Opersys inc. ()    Introduction to Android App Development   March 28, 2012   3 / 59
About Android


About Android




   Huge
   Stealthy
   Fast moving




    Opersys inc. ()   Introduction to Android App Development   March 28, 2012   4 / 59
Outline

1    What is and isn’t Android
2    Android, the numbers
3    Where does Android come from
4    App model (vs. “classic” applications)
5    User experience
6    Features
7    Internal architecture
8    SDK set up and update
9    Basic debugging tricks
        Development and debugging tools
10   Alternative app marketplaces
11   App Dev Intro
12   Application Components
        Activities
        Services
        Broadcast Receivers
        Content Providers
        Opersys inc. ()   Introduction to Android App Development   March 28, 2012   5 / 59
Outline
13   Intents
14   Components activation and shut down
        Activity
        Service
        Broadcast Receiver
        Content Provider
15   The Manifest file
16   Processes and threads
        Processes
        Threads
        Remote procedure calls
        Thread-safe methods
17   Component Lifecycles
        Activity Lifecycle
         System configuration changes
       Service Lifecycle
       Broadcast Receiver Lifecycle
       Content Provider Lifecycle
        Opersys inc. ()    Introduction to Android App Development   March 28, 2012   6 / 59
Outline

       Processes and Lifecycles




18   UI Basics
       Widgets
       UI events
       Menus




19   Demos ...




        Opersys inc. ()   Introduction to Android App Development   March 28, 2012   7 / 59
What is and isn’t Android


What is and isn’t Android


   IS:
          Tailored for touch-based app UX
          App marketplace
          Custom OS distribution
          Complete and coherent app development API
          Java based
          Fully-integrated development suite
          Very well documented development platform
          Growing development community
   ISN’T:
          Traditional Java (SE/ME/foo or otherwise)
          Traditional “application” development model
          Traditional Embedded Linux system



     Opersys inc. ()         Introduction to Android App Development   March 28, 2012   8 / 59
Android, the numbers


Android, the numbers

   Android is currently on fire
   850k phone activations per day
   400k apps (vs. 585k for Apple’s app store
    50% total US smartphone subscribers
   ...




     Opersys inc. ()     Introduction to Android App Development   March 28, 2012   9 / 59
Where does Android come from


Where does Android come from
   2002:
         Sergey Brin and Larry Page started using Sidekick smartphone
         Sidedick one of 1st smartphones integrating web, IM, mail, etc.
         Sidedick was made by Danger inc., co-founded by Andy Rubin (CEO)
         Brin/Page met Rubin at Stanf. talk he gave on Sidekick’s development
         Google was default search engine on Sidekick
   2004:
         Despite cult following, Sidekick wasn’t making $
         Danger inc. board decided to replace Rubin
         Rubin left. Got seed $. Started Android inc. Started looking for VCs.
         Goal: Open mobile hand-set platform
   2005 - July:
         Got bought by Google for undisclosed sum :)
   2007 - November:
         Open Handset Alliance announced along with Android
   2008 - September: Android 1.0 / “Astro”
    Opersys inc. ()              Introduction to Android App Development   March 28, 2012   10 / 59
Where does Android come from




2009 - Feb.: Android 1.1 / “Bender”
2009 - Apr.: Android 1.5 / Cupcake
2009 - Sept.: Android 1.6 / Donut
2009 - Oct.: Android 2.0/2.1 / Eclair
2010 - May: Android 2.2 / Froyo
2010 - Dec.: Android 2.3 / Gingerbread
2011 - Jan : Android 3.0 / Honeycomb - Tablet-optimized
2011 - May : Android 3.1
2011 - Nov : Android 4.0 / Ice-Cream Sandwich - merge of
Gingerbread and Honeycomb




 Opersys inc. ()              Introduction to Android App Development   March 28, 2012   11 / 59
App model (vs. “classic” applications)


App model (vs. “classic” applications)



    No single entry point (No main() !?!?)
    Unlike Windows or Unix API/semantics in many ways
    Processes and apps will be killed at random: developer must code
    accordingly
    UI disintermediated from app “brains”
    Apps are isolated, very
    Behavior predicated on low-memory conditions




     Opersys inc. ()                Introduction to Android App Development   March 28, 2012   12 / 59
User experience


User experience




     Opersys inc. ()   Introduction to Android App Development   March 28, 2012   13 / 59
Features


Features - as advertized by Google
    Application framework enabling reuse and replacement of components
    Dalvik virtual machine optimized for mobile devices
    Integrated browser based on the open source WebKit engine
    Optimized graphics powered by a custom 2D graphics library; 3D
    graphics based on the OpenGL ES 1.0 specification (hardware
    acceleration optional)
    SQLite for structured data storage
    Media support for common audio, video, and still image formats
    (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
    GSM Telephony (hardware dependent)
    Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
    Camera, GPS, compass, and accelerometer (hardware dependent)
    Rich development environment including a device emulator, tools for
    debugging, memory and performance profiling, and a plugin for the
    Eclipse IDE
     Opersys inc. ()   Introduction to Android App Development   March 28, 2012   14 / 59
Internal architecture


Internal architecture - Google’s version




     Opersys inc. ()   Introduction to Android App Development   March 28, 2012   15 / 59
Internal architecture


Internal architecture - the “real thing”




     Opersys inc. ()   Introduction to Android App Development   March 28, 2012   16 / 59
SDK set up and update


SDK set up and update



   What’s in the SDK?
         Android-specific tools
         Eclipse plugin
         QEMU-based emulator
   Getting the SDK
   http://developer.android.com/sdk/index.html
   Prerequisites:
         Windows, Mac or Linux
         Eclipse 3.4 or later - (highly recommended)
         JDK 5 or 6 (gcj won’t do)




    Opersys inc. ()      Introduction to Android App Development   March 28, 2012   17 / 59
SDK set up and update


SDK set up and update




 1   Make sure prerequisites are installed
 2   Install SDK
 3   Install ADT plugin for Eclipse
 4   Use “Android SDK and AVD Manager” (android cli tool) to install
     platform support




      Opersys inc. ()      Introduction to Android App Development   March 28, 2012   18 / 59
Basic debugging tricks


Basic debugging tricks

    Logging - Use LogCat to view (either using ’adb logcat’ or Ecplise):
    import android.util.Log;
    ...
    Log.d(DTAG, "onConfigurationChanged() called");

    Log output:
    D/PhoneApp( 229):   updateProximitySensorMode: state = IDLE
    D/PhoneApp( 229):   updateProximitySensorMode: lock already released.
    W/dalvikvm( 824):   threadid=1: thread exiting with uncaught exception (group=0
    E/AndroidRuntime(   824): FATAL EXCEPTION: main

    Toast messages - show up device UI:
    import android.widget.Toast;
    ...
    Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show();




     Opersys inc. ()       Introduction to Android App Development   March 28, 2012   19 / 59
Basic debugging tricks   Development and debugging tools


Development and debugging tools


   android - manage AVDs and SDK components
   apkbuilder - creating .apk packages
   dx - converting .jar to .dex
   adb - debug bridge
   ddms - Dalvik debug monitor
   monkey - test UI randomly
   traceview - view app’s execution logs
   logcat - view system logs
   ...



     Opersys inc. ()      Introduction to Android App Development                 March 28, 2012   20 / 59
Alternative app marketplaces


Alternative app marketplaces



    App-manager has to be root to install apps
    User can circumvent by allowing install from “Unknown sources” :(
    Manufacturer and/or carrier can factory-install other “market”
    Amazon
    B&N NOOK Apps
    Verizon V Cast
    F-Droid: FOSS app backend




     Opersys inc. ()            Introduction to Android App Development   March 28, 2012   21 / 59
App Dev Intro


App Dev Intro



   All app contents packaged into .apk:
         Compiled Java
         Resources
         Data
         Native code
         etc.
   .apk generated by aapttool
   .apk is what is downloaded by users to their device
   1 apk = 1 app




    Opersys inc. ()      Introduction to Android App Development   March 28, 2012   22 / 59
App Dev Intro




Apps live in isolated worlds:
      Each App is assigned its own UID:
              Separate permissions (ex: /home/foo vs. /home/bar)
              No files shared
      Every App is its own separate Linux process:
              Process startup/shutdown is automagic/on-demand
              No single point of failure
      Each process has its own Dalvik VM:
              No inter-app code interference
              No direct cross-app calls
Exceptions:
      Can arrange for 2 apps = 1 UID (shared files)
      Can arrange for 2 apps of 1 UID = 1 Process




 Opersys inc. ()          Introduction to Android App Development   March 28, 2012   23 / 59
Application Components


Application Components



   1 App = N Components
   Apps can use components of other applications
   App processes are automagically started whenever any part is needed
   Ergo: N entry points, !1, and !main()
   Components:
         Activities
         Services
         Broadcast Receivers
         Content Providers




    Opersys inc. ()       Introduction to Android App Development   March 28, 2012   24 / 59
Application Components   Activities


Activities



    Visual interface for a single user interaction
    Activities are independent from one another
    public class Foo extends Activity { ...                           }
    1 Activity = 1 default window, usually full-screen
    Visual content = hierarchy of views (Viewclass ):
          ex.: containers, buttons, scroll bars, etc.
    Activity.setContentView() = set root Viewclass




     Opersys inc. ()        Introduction to Android App Development       March 28, 2012   25 / 59
Application Components   Services


Services



    Background service
    Runs indefinitely
    Talk to service = bind to it
    public class Foo extends Service { ...                           }
    Runs in main app process
    Ergo: use accept()/fork() semantics
    Remote calls run on thread pool




     Opersys inc. ()       Introduction to Android App Development       March 28, 2012   26 / 59
Application Components   Broadcast Receivers


Broadcast Receivers



   Receive and react to broadcast announcement
   Usually system event:
          Ex.: low bat, new pic, timezone change
   Apps can also initiate broadcasts
   public class Foo extends BroadcastReceiver { ...                               }
   1 App can have N Broadcast Receivers
   No UI, but can start Activity or send Notifications




     Opersys inc. ()       Introduction to Android App Development    March 28, 2012   27 / 59
Application Components   Content Providers


Content Providers




   Makes data available to other apps
   Data can be stored in FS or SQLite
   public class Foo extends ContentProvider { ...                            }
   Apps use ContentResolverobject to talk to Content Provider
   All IPC is transparent when using ContentResolverobject




     Opersys inc. ()       Introduction to Android App Development   March 28, 2012   28 / 59
Intents


Intents




    Intent = asynchronous message w/ or w/o designated target
    Like a polymorphic Unix signal, but w/o required target
    Intents ”payload” held in Intentobject
    Intent Filters specified in Manifest file




     Opersys inc. ()     Introduction to Android App Development   March 28, 2012   29 / 59
Components activation and shut down


Components activation and shut down




   Activity
   Service
   Content Provider




    Opersys inc. ()              Introduction to Android App Development   March 28, 2012   30 / 59
Components activation and shut down   Activity


Activity


    Activated through passing Intent to:
           Context.startActivity()
           Activity.startActivityForResult()
    Activity’s onCreate() doesn’t provide the Intent
    Use getIntent() to look at initial Intent
    Subsequent Intents sent to onNewIntent() callback
    Intent results sent to onActivityResult() callback
    Shut down:
           Self: finish()
           Other Activity started w/ startActivityForResult(): finishActivity()
           System



     Opersys inc. ()              Introduction to Android App Development   March 28, 2012   31 / 59
Components activation and shut down   Service


Service


    Activated through:
          Passing Intent to Context.startService()
          Call to Context.bindService()
    Both generate an onCreate() callback
    Context.startService() generates onStart() callback:
          Takes Intent as parameter
    Context.bindService() generates onBind() callback:
          Use RPC thereafter
    Shut down:
          Self: stopSelf()
          Other Component: Context.stopService()
          System



     Opersys inc. ()              Introduction to Android App Development   March 28, 2012   32 / 59
Components activation and shut down   Broadcast Receiver


Broadcast Receiver



   Send Intent through:
          Context.sendBroadcast()
          Context.sendOrderedBroadcast()
          Context.sendStickyBroadcast()
   Trigger onReceive() callback
   Active while it’s responding to broadcast message
   Can be shut down by system




     Opersys inc. ()              Introduction to Android App Development   March 28, 2012   33 / 59
Components activation and shut down   Content Provider


Content Provider




   Activated through request from ContentResolver
   Active while it’s responding to ContentResolver request
   Can be shut down by system




    Opersys inc. ()              Introduction to Android App Development   March 28, 2012   34 / 59
The Manifest file


The Manifest file



   Informs system about app’s components
   XML format
   Always called AndroidManifest.xml
   Activity = <activity> ... static
   Service = <service> ... static
   Broadcast Receiver:
         Static = <receiver>
         Dynamic = Context.registerReceiver()
   Content Provider = <provider> ... static




    Opersys inc. ()     Introduction to Android App Development   March 28, 2012   35 / 59
The Manifest file




<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
    <application . . . >
        <activity android:name="com.example.project.FreneticAc
                  android:icon="@drawable/small_pic.png"
                  android:label="@string/freneticLabel"
                  . . . >
        </activity>
        . . .
    </application>
</manifest>




     Opersys inc. ()   Introduction to Android App Development   March 28, 2012   36 / 59
The Manifest file




Two types of Intents:
      w/ explicitly named targets
      w/o explicitly named targets
When no target is named, system uses Filters to locate best fit
If Intent isn’t named in Filter, activation only on explicit naming
Intent Filter for Launcher icon Activity:
      action: android.intent.action.MAIN
      category: android.intent.category.LAUNCHER




 Opersys inc. ()      Introduction to Android App Development   March 28, 2012   37 / 59
The Manifest file




. . .
<intent-filter . . . >
   <action android:name="android.intent.action.MAIN" />
   <category android:name="android.intent.category.LAUNCHER" /
</intent-filter>
<intent-filter . . . >
   <action android:name="com.example.project.BOUNCE" />
   <data android:mimeType="image/jpeg" />
   <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
. . .




     Opersys inc. ()   Introduction to Android App Development   March 28, 2012   38 / 59
Processes and threads


Processes and threads




   1st time Components need to run: System starts Linux process
   Default: all Components of an app run in single process thread
   Defaults can be overriden:
          Run Components in other processes
          Spawn additional threads for any process




     Opersys inc. ()      Introduction to Android App Development   March 28, 2012   39 / 59
Processes and threads   Processes


Processes

   Default: all callbacks to any app Component are issued to the main
   process thread
   <activity>—<service>—<recipient>—<provider> have
   processattribute to override default:
          String name of process (default: same as app package name)
          If starts w/ ”:”, process ”private” to app is created for Component
          If starts w/ lowercase, Component runs in global process of that name
          if permissions allow
   Do NOT perform blocking/long operations in main process thread:
          Spawn threads instead
   Process termination/restart is at system’s discretion
   Therefore:
          Must manage Component Lifecycle


     Opersys inc. ()      Introduction to Android App Development   March 28, 2012   40 / 59
Processes and threads   Threads


Threads




   Create using the regular Java Threadobject
   Android API provides thread helper classes:
         Looper: for running a message loop with a thread
         Handler: for processing messages
         HandlerThread: for setting up a thread with a message loop




    Opersys inc. ()      Introduction to Android App Development   March 28, 2012   41 / 59
Processes and threads   Remote procedure calls


Remote procedure calls




   Android RPCs = Binder mechanism
   Binder is a low-level functionality, not used as-is
   Instead: must define interface using Interface Definition Language
   (IDL)
   IDL fed to aidltool to generate Java interface definitions




     Opersys inc. ()     Introduction to Android App Development        March 28, 2012   42 / 59
Processes and threads   Remote procedure calls




Opersys inc. ()     Introduction to Android App Development        March 28, 2012   43 / 59
Processes and threads   Remote procedure calls




Code generated by aidltool takes care of all IPC details
Typically, the invoked party is a Service
Client:
      Implements onServiceConnected() callback, receives IBinder object
      Implements onServiceDisconnected() callback
      Calls bindService() to connect to Service
Service:
      Subclasses aidltool -generated Stub to implement interface
      onBind() callback decides whether or not to accept connection based
      on Intent
      onBind() returns instance of Stub subclass
All RPC calls are synchronous




 Opersys inc. ()      Introduction to Android App Development        March 28, 2012   44 / 59
Processes and threads   Thread-safe methods


Thread-safe methods


   Remote callbacks don’t run in Component’s process main thread
   Remote callbacks run from a thread pool:
         Methods exposed by an IBinder Stub subclass
         ContentProvider methods (query(), insert(), delete(), update(),
         getType())
   Since many clients can call the same methods: methods exposed
   remotely must be thread safe:
         ’synchronized’ keyword
         java.lang.Thread
         java.util.concurrent*
         ...




    Opersys inc. ()       Introduction to Android App Development     March 28, 2012   45 / 59
Component Lifecycles


Component Lifecycles




   System automagically starts/stops/kills processes
   System triggers Lifecycle callbacks when relevant
   Ergo: Must manage Component Lifecycle
   Some Components are more complex to manage than others




    Opersys inc. ()     Introduction to Android App Development   March 28, 2012   46 / 59
Component Lifecycles   Activity Lifecycle


Activity Lifecycle




    Activity’s states:
          Resumed (running): top of Task’s Activity stack
          Paused: lost focus but still visible
          Stopped: completely hidden to user
    Paused or stopped Activities are garbage-collectable




     Opersys inc. ()       Introduction to Android App Development   March 28, 2012   47 / 59
Component Lifecycles   Activity Lifecycle




Opersys inc. ()     Introduction to Android App Development   March 28, 2012   48 / 59
Component Lifecycles   Activity Lifecycle


System configuration changes




   If config changes, system will stop and restart Activity w/ new
   resources
   Screen orientation change = config change
   Either let system restart Activity and save/restore its state:
         Bundle, for small amounts of data
         Object, for large/non-trivial data (sockets, bitmaps, etc.)
   Or handle the config change yourself




    Opersys inc. ()       Introduction to Android App Development   March 28, 2012   49 / 59
Component Lifecycles   Service Lifecycle


Service Lifecycle




    Core callbacks:
          onCreate()
          onDestroy()
    Ways to operate a Service (not mutually exclusive):
          Start/stop the service
          Bind/unbind to the Service




     Opersys inc. ()      Introduction to Android App Development   March 28, 2012   50 / 59
Component Lifecycles   Service Lifecycle




Opersys inc. ()     Introduction to Android App Development   March 28, 2012   51 / 59
Component Lifecycles   Broadcast Receiver Lifecycle


Broadcast Receiver Lifecycle




    Only has onReceive()
    Considered active only while servicing this call
    Encompassing process ”protected” while Broadcast Receiver active
    Should do minimal work and return
    Should start service for long-running work




     Opersys inc. ()     Introduction to Android App Development             March 28, 2012   52 / 59
Component Lifecycles   Content Provider Lifecycle


Content Provider Lifecycle




    Only has onCreate()
    Implement Content Provider REST-like callbacks:
          query(Uri, String[], String, String[], String)
          insert(Uri, ContentValues)
          update(Uri, ContentValues, String, String[])
          delete(Uri, String, String[])
          getType(Uri) returns Content Provider data MIME type




     Opersys inc. ()      Introduction to Android App Development           March 28, 2012   53 / 59
Component Lifecycles   Processes and Lifecycles


Processes and Lifecycles


    Android’s process management is predicated on low-memory:
          Processes are started and remain active as long as RAM is available
          When RAM is low, system starts ”garbage collecting”
          Processes of lower importance are killed to free up space
          System continously maintains an active Components ”importance
          hierarchy”
          System tries to provide ”priority inheritance”
    Hierarchy:
      1   Foreground process - killed as a last resort
      2   Visible process
      3   Service process
      4   Background process
      5   Empty process



     Opersys inc. ()       Introduction to Android App Development         March 28, 2012   54 / 59
UI Basics


UI Basics



    UI is built on top of Viewobject and ViewGroupobject
    Viewclass is root for subclassed ”widgets” (text fields, buttons, etc.)
    ViewGroupclass is root for subclassed ”layouts”
    Viewobject = rectangle on screen. Handled by object for rectangle:
          Measurement
          Layout
          Drawing
          Focus change
          Scrolling
          Key/gesture interactions




     Opersys inc. ()      Introduction to Android App Development   March 28, 2012   55 / 59
UI Basics   Widgets


Widgets



   Widget = Viewobject w/ specific UI:
         Buttons
         Checkboxes
         Text-entry field
         Date picker
         Clock
         Zoom controls
   See android.widgetpackage
   You can create custom widgets




    Opersys inc. ()        Introduction to Android App Development   March 28, 2012   56 / 59
UI Basics   UI events


UI events



   To get events:
          Define and register event listener, or
          Override existing one of widget’s callbacks
   Event listener:
          Most common case
          Viewclass contains collections of nested interfaces w/ callbacks
          Must implement interface/callback and register it to Viewobject
          Generic form:
                  On*Listenerinterface & On*() callback; View.setOn*Listener()




     Opersys inc. ()          Introduction to Android App Development   March 28, 2012   57 / 59
UI Basics   Menus


Menus

   Types:
         Main app menu view through the MENU key
         Contextual menus
   Menus are Viewobject hierarchies too
   However:
         Hierarchy is automatically created by system, not you
         No need to register event listeners
   Instead, implement callbacks for:
         Populating menu:
                 onCreateOptionsMenu()
                 onCreateContextMenu()
         Handling menu selection:
                 onOptionsItemSelected()
                 onContextItemSelected()


    Opersys inc. ()         Introduction to Android App Development   March 28, 2012   58 / 59
Demos ...


Demos ...




    Opersys inc. ()   Introduction to Android App Development   March 28, 2012   59 / 59

Weitere ähnliche Inhalte

Was ist angesagt?

Android development basics
Android development basicsAndroid development basics
Android development basicsPramesh Gautam
 
android-tutorial-for-beginner
android-tutorial-for-beginnerandroid-tutorial-for-beginner
android-tutorial-for-beginnerAjailal Parackal
 
Android app development ppt
Android app development pptAndroid app development ppt
Android app development pptsaitej15
 
Introduction to Android
Introduction to Android Introduction to Android
Introduction to Android Ranjith Kumar
 
Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017Ivo Neskovic
 
Android architecture
Android architectureAndroid architecture
Android architectureHari Krishna
 
Android fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginnersAndroid fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginnersBoom Shukla
 
Introduction to Android App Development
Introduction to Android App DevelopmentIntroduction to Android App Development
Introduction to Android App DevelopmentTodd Burgess
 
Android terminologies
Android terminologiesAndroid terminologies
Android terminologiesjerry vasoya
 
Android Development: Build Android App from Scratch
Android Development: Build Android App from ScratchAndroid Development: Build Android App from Scratch
Android Development: Build Android App from ScratchTaufan Erfiyanto
 
Android Programming Seminar
Android Programming SeminarAndroid Programming Seminar
Android Programming SeminarNhat Nguyen
 
Introduction to Android Development Part 1
Introduction to Android Development Part 1Introduction to Android Development Part 1
Introduction to Android Development Part 1Kainda Kiniel Daka
 
Android development tutorial
Android development tutorialAndroid development tutorial
Android development tutorialnazzf
 
Industrial Training in Android Application
Industrial Training in Android ApplicationIndustrial Training in Android Application
Industrial Training in Android ApplicationArcadian Learning
 

Was ist angesagt? (20)

Android development basics
Android development basicsAndroid development basics
Android development basics
 
PPT Companion to Android
PPT Companion to AndroidPPT Companion to Android
PPT Companion to Android
 
android-tutorial-for-beginner
android-tutorial-for-beginnerandroid-tutorial-for-beginner
android-tutorial-for-beginner
 
Android app development ppt
Android app development pptAndroid app development ppt
Android app development ppt
 
Introduction to Android
Introduction to Android Introduction to Android
Introduction to Android
 
Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017
 
Android overview
Android overviewAndroid overview
Android overview
 
Android architecture
Android architectureAndroid architecture
Android architecture
 
Android fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginnersAndroid fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginners
 
ANDROID
ANDROIDANDROID
ANDROID
 
Introduction to Android App Development
Introduction to Android App DevelopmentIntroduction to Android App Development
Introduction to Android App Development
 
Android terminologies
Android terminologiesAndroid terminologies
Android terminologies
 
Android Development: Build Android App from Scratch
Android Development: Build Android App from ScratchAndroid Development: Build Android App from Scratch
Android Development: Build Android App from Scratch
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform Architecture
 
Android Programming Seminar
Android Programming SeminarAndroid Programming Seminar
Android Programming Seminar
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Introduction to Android Development Part 1
Introduction to Android Development Part 1Introduction to Android Development Part 1
Introduction to Android Development Part 1
 
Android development tutorial
Android development tutorialAndroid development tutorial
Android development tutorial
 
Industrial Training in Android Application
Industrial Training in Android ApplicationIndustrial Training in Android Application
Industrial Training in Android Application
 
Android Report
Android ReportAndroid Report
Android Report
 

Andere mochten auch

Basic of Android App Development
Basic of Android App DevelopmentBasic of Android App Development
Basic of Android App DevelopmentAbhijeet Gupta
 
Pp traditional app
Pp traditional appPp traditional app
Pp traditional appAri Rusila
 
Android application developement seminar
Android application developement seminarAndroid application developement seminar
Android application developement seminarNiraj Narkhede
 
Android System Developement
Android System DevelopementAndroid System Developement
Android System DevelopementSiji Sunny
 
Android application development
Android application developmentAndroid application development
Android application developmentslidesuren
 
Android App Development Company Presentation
Android App Development Company PresentationAndroid App Development Company Presentation
Android App Development Company PresentationSystango Ltd
 
Intro To Android App Development
Intro To Android App DevelopmentIntro To Android App Development
Intro To Android App DevelopmentMike Kvintus
 
Accelerate Application development with WSO2 App Factory
 Accelerate Application development with WSO2 App Factory Accelerate Application development with WSO2 App Factory
Accelerate Application development with WSO2 App FactoryWSO2
 
Psychometrica brochure
Psychometrica brochurePsychometrica brochure
Psychometrica brochurePsychometrica
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday developmentJustyna Ilczuk
 
Mobile App Management (MAM) for Developers and IT-Administrators
Mobile App Management (MAM) for Developers and IT-AdministratorsMobile App Management (MAM) for Developers and IT-Administrators
Mobile App Management (MAM) for Developers and IT-AdministratorsMobileSolutionsDTAG
 
Leveraging Android for the Internet of Things with Eclipse M2M
Leveraging Android for the Internet of Things with Eclipse M2MLeveraging Android for the Internet of Things with Eclipse M2M
Leveraging Android for the Internet of Things with Eclipse M2MBenjamin Cabé
 
Android Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADTAndroid Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADTEakapong Kattiya
 
Custom Android App Development – Web Animation India
Custom Android App Development – Web Animation IndiaCustom Android App Development – Web Animation India
Custom Android App Development – Web Animation IndiaMarion Welch
 
online grocery store
online grocery  storeonline grocery  store
online grocery storeharshad_shah
 
Online Grocery Store
Online Grocery StoreOnline Grocery Store
Online Grocery StoreHira Saeed
 
DockerCon 16 General Session Day 2
DockerCon 16 General Session Day 2 DockerCon 16 General Session Day 2
DockerCon 16 General Session Day 2 Docker, Inc.
 
"Automatic Intelligent Plant Irrigation System using Arduino and GSM board"
"Automatic Intelligent Plant Irrigation System using Arduino and GSM board""Automatic Intelligent Plant Irrigation System using Arduino and GSM board"
"Automatic Intelligent Plant Irrigation System using Arduino and GSM board"Disha Modi
 

Andere mochten auch (19)

Basic of Android App Development
Basic of Android App DevelopmentBasic of Android App Development
Basic of Android App Development
 
Pp traditional app
Pp traditional appPp traditional app
Pp traditional app
 
Android application developement seminar
Android application developement seminarAndroid application developement seminar
Android application developement seminar
 
Android System Developement
Android System DevelopementAndroid System Developement
Android System Developement
 
Android application development
Android application developmentAndroid application development
Android application development
 
Android App Development Company Presentation
Android App Development Company PresentationAndroid App Development Company Presentation
Android App Development Company Presentation
 
Intro To Android App Development
Intro To Android App DevelopmentIntro To Android App Development
Intro To Android App Development
 
Accelerate Application development with WSO2 App Factory
 Accelerate Application development with WSO2 App Factory Accelerate Application development with WSO2 App Factory
Accelerate Application development with WSO2 App Factory
 
Psychometrica brochure
Psychometrica brochurePsychometrica brochure
Psychometrica brochure
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
 
Mobile App Management (MAM) for Developers and IT-Administrators
Mobile App Management (MAM) for Developers and IT-AdministratorsMobile App Management (MAM) for Developers and IT-Administrators
Mobile App Management (MAM) for Developers and IT-Administrators
 
Leveraging Android for the Internet of Things with Eclipse M2M
Leveraging Android for the Internet of Things with Eclipse M2MLeveraging Android for the Internet of Things with Eclipse M2M
Leveraging Android for the Internet of Things with Eclipse M2M
 
Android Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADTAndroid Basic Development Day 1 Introduction & ADT
Android Basic Development Day 1 Introduction & ADT
 
Op amp
Op ampOp amp
Op amp
 
Custom Android App Development – Web Animation India
Custom Android App Development – Web Animation IndiaCustom Android App Development – Web Animation India
Custom Android App Development – Web Animation India
 
online grocery store
online grocery  storeonline grocery  store
online grocery store
 
Online Grocery Store
Online Grocery StoreOnline Grocery Store
Online Grocery Store
 
DockerCon 16 General Session Day 2
DockerCon 16 General Session Day 2 DockerCon 16 General Session Day 2
DockerCon 16 General Session Day 2
 
"Automatic Intelligent Plant Irrigation System using Arduino and GSM board"
"Automatic Intelligent Plant Irrigation System using Arduino and GSM board""Automatic Intelligent Plant Irrigation System using Arduino and GSM board"
"Automatic Intelligent Plant Irrigation System using Arduino and GSM board"
 

Ähnlich wie Android App Development Intro at ESC SV 2012

report A K Maurya.pdf
report A K Maurya.pdfreport A K Maurya.pdf
report A K Maurya.pdfSonu62614
 
Unit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-assUnit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-assARVIND SARDAR
 
Android - Workshop By Secure-Net Technologies
Android - Workshop By Secure-Net TechnologiesAndroid - Workshop By Secure-Net Technologies
Android - Workshop By Secure-Net TechnologiesNamita Mahajan
 
Android and its feature
Android and its featureAndroid and its feature
Android and its featureShubham Kumar
 
androidPramming.ppt
androidPramming.pptandroidPramming.ppt
androidPramming.pptBijayKc16
 
Evolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s VersionsEvolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s Versionsijtsrd
 
ANDROID PPT_DAY1.ppt
ANDROID PPT_DAY1.pptANDROID PPT_DAY1.ppt
ANDROID PPT_DAY1.pptIssacPeter2
 
Android seminar report
Android seminar reportAndroid seminar report
Android seminar reportdgpune
 
Synopsis on android application
Synopsis on android applicationSynopsis on android application
Synopsis on android applicationJawed akhtar
 
Android Design Patterns in Mobile Application Development - Michalis Grigorop...
Android Design Patterns in Mobile Application Development - Michalis Grigorop...Android Design Patterns in Mobile Application Development - Michalis Grigorop...
Android Design Patterns in Mobile Application Development - Michalis Grigorop...Michail Grigoropoulos
 
Introduction to Mobile Development
Introduction to Mobile DevelopmentIntroduction to Mobile Development
Introduction to Mobile DevelopmentPragnesh Vaghela
 
Android OS and application development
Android OS and application developmentAndroid OS and application development
Android OS and application developmentLokesh Kumar
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentProf. Erwin Globio
 
Creating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for AndroidCreating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for AndroidMotorola Mobility - MOTODEV
 

Ähnlich wie Android App Development Intro at ESC SV 2012 (20)

Notes Unit2.pptx
Notes Unit2.pptxNotes Unit2.pptx
Notes Unit2.pptx
 
report A K Maurya.pdf
report A K Maurya.pdfreport A K Maurya.pdf
report A K Maurya.pdf
 
Unit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-assUnit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-ass
 
Android Basics
Android BasicsAndroid Basics
Android Basics
 
All about android
All about androidAll about android
All about android
 
Android the future
Android  the futureAndroid  the future
Android the future
 
Android - Workshop By Secure-Net Technologies
Android - Workshop By Secure-Net TechnologiesAndroid - Workshop By Secure-Net Technologies
Android - Workshop By Secure-Net Technologies
 
Android and its feature
Android and its featureAndroid and its feature
Android and its feature
 
androidPramming.ppt
androidPramming.pptandroidPramming.ppt
androidPramming.ppt
 
Evolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s VersionsEvolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s Versions
 
ANDROID PPT_DAY1.ppt
ANDROID PPT_DAY1.pptANDROID PPT_DAY1.ppt
ANDROID PPT_DAY1.ppt
 
Android seminar report
Android seminar reportAndroid seminar report
Android seminar report
 
Synopsis on android application
Synopsis on android applicationSynopsis on android application
Synopsis on android application
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
 
Android Design Patterns in Mobile Application Development - Michalis Grigorop...
Android Design Patterns in Mobile Application Development - Michalis Grigorop...Android Design Patterns in Mobile Application Development - Michalis Grigorop...
Android Design Patterns in Mobile Application Development - Michalis Grigorop...
 
Android tutorial1
Android tutorial1Android tutorial1
Android tutorial1
 
Introduction to Mobile Development
Introduction to Mobile DevelopmentIntroduction to Mobile Development
Introduction to Mobile Development
 
Android OS and application development
Android OS and application developmentAndroid OS and application development
Android OS and application development
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Creating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for AndroidCreating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for Android
 

Mehr von Opersys inc.

Android Automotive
Android AutomotiveAndroid Automotive
Android AutomotiveOpersys inc.
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals UpdateOpersys inc.
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security InternalsOpersys inc.
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with PieOpersys inc.
 
Android's HIDL: Treble in the HAL
Android's HIDL: Treble in the HALAndroid's HIDL: Treble in the HAL
Android's HIDL: Treble in the HALOpersys inc.
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Opersys inc.
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with OreoOpersys inc.
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoTOpersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave InternalsOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave InternalsOpersys inc.
 

Mehr von Opersys inc. (20)

Android Automotive
Android AutomotiveAndroid Automotive
Android Automotive
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals Update
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security Internals
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
 
Android's HIDL: Treble in the HAL
Android's HIDL: Treble in the HALAndroid's HIDL: Treble in the HAL
Android's HIDL: Treble in the HAL
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with Oreo
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 

Kürzlich hochgeladen

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 

Kürzlich hochgeladen (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 

Android App Development Intro at ESC SV 2012

  • 1. Introduction to Android App Development Opersys inc. March 28, 2012 Opersys inc. () Introduction to Android App Development March 28, 2012 1 / 59
  • 2. These slides are made available to you under a Creative Commons Share-Alike 3.0 license. The full terms of this license are here: https://creativecommons.org/licenses/by-sa/3.0/ Attribution requirements and misc., PLEASE READ: This slide must remain as-is in this specific location (slide #2), everything else you are free to change; including the logo :-) Use of figures in other documents must feature the below “Originals at” URL immediately under that figure and the below copyright notice where appropriate. You are free to fill in the space in the below “Delivered and/or customized by” section as you see fit. You are FORBIDEN from using the default “About me” slide as-is or any of its contents. (C) Copyright 2010-2012, Opersys inc. These slides created by: Karim Yaghmour Originals at: www.opersys.com/training/android-development Delivered and/or customized by: Opersys inc. () Introduction to Android App Development March 28, 2012 2 / 59
  • 3. About me About me Introduced “Linux Trace Toolkit” in late ’90s Originated Adeos and relayfs (kernel/relay.c) Training, Custom Dev, Consulting, ... Opersys inc. () Introduction to Android App Development March 28, 2012 3 / 59
  • 4. About Android About Android Huge Stealthy Fast moving Opersys inc. () Introduction to Android App Development March 28, 2012 4 / 59
  • 5. Outline 1 What is and isn’t Android 2 Android, the numbers 3 Where does Android come from 4 App model (vs. “classic” applications) 5 User experience 6 Features 7 Internal architecture 8 SDK set up and update 9 Basic debugging tricks Development and debugging tools 10 Alternative app marketplaces 11 App Dev Intro 12 Application Components Activities Services Broadcast Receivers Content Providers Opersys inc. () Introduction to Android App Development March 28, 2012 5 / 59
  • 6. Outline 13 Intents 14 Components activation and shut down Activity Service Broadcast Receiver Content Provider 15 The Manifest file 16 Processes and threads Processes Threads Remote procedure calls Thread-safe methods 17 Component Lifecycles Activity Lifecycle System configuration changes Service Lifecycle Broadcast Receiver Lifecycle Content Provider Lifecycle Opersys inc. () Introduction to Android App Development March 28, 2012 6 / 59
  • 7. Outline Processes and Lifecycles 18 UI Basics Widgets UI events Menus 19 Demos ... Opersys inc. () Introduction to Android App Development March 28, 2012 7 / 59
  • 8. What is and isn’t Android What is and isn’t Android IS: Tailored for touch-based app UX App marketplace Custom OS distribution Complete and coherent app development API Java based Fully-integrated development suite Very well documented development platform Growing development community ISN’T: Traditional Java (SE/ME/foo or otherwise) Traditional “application” development model Traditional Embedded Linux system Opersys inc. () Introduction to Android App Development March 28, 2012 8 / 59
  • 9. Android, the numbers Android, the numbers Android is currently on fire 850k phone activations per day 400k apps (vs. 585k for Apple’s app store 50% total US smartphone subscribers ... Opersys inc. () Introduction to Android App Development March 28, 2012 9 / 59
  • 10. Where does Android come from Where does Android come from 2002: Sergey Brin and Larry Page started using Sidekick smartphone Sidedick one of 1st smartphones integrating web, IM, mail, etc. Sidedick was made by Danger inc., co-founded by Andy Rubin (CEO) Brin/Page met Rubin at Stanf. talk he gave on Sidekick’s development Google was default search engine on Sidekick 2004: Despite cult following, Sidekick wasn’t making $ Danger inc. board decided to replace Rubin Rubin left. Got seed $. Started Android inc. Started looking for VCs. Goal: Open mobile hand-set platform 2005 - July: Got bought by Google for undisclosed sum :) 2007 - November: Open Handset Alliance announced along with Android 2008 - September: Android 1.0 / “Astro” Opersys inc. () Introduction to Android App Development March 28, 2012 10 / 59
  • 11. Where does Android come from 2009 - Feb.: Android 1.1 / “Bender” 2009 - Apr.: Android 1.5 / Cupcake 2009 - Sept.: Android 1.6 / Donut 2009 - Oct.: Android 2.0/2.1 / Eclair 2010 - May: Android 2.2 / Froyo 2010 - Dec.: Android 2.3 / Gingerbread 2011 - Jan : Android 3.0 / Honeycomb - Tablet-optimized 2011 - May : Android 3.1 2011 - Nov : Android 4.0 / Ice-Cream Sandwich - merge of Gingerbread and Honeycomb Opersys inc. () Introduction to Android App Development March 28, 2012 11 / 59
  • 12. App model (vs. “classic” applications) App model (vs. “classic” applications) No single entry point (No main() !?!?) Unlike Windows or Unix API/semantics in many ways Processes and apps will be killed at random: developer must code accordingly UI disintermediated from app “brains” Apps are isolated, very Behavior predicated on low-memory conditions Opersys inc. () Introduction to Android App Development March 28, 2012 12 / 59
  • 13. User experience User experience Opersys inc. () Introduction to Android App Development March 28, 2012 13 / 59
  • 14. Features Features - as advertized by Google Application framework enabling reuse and replacement of components Dalvik virtual machine optimized for mobile devices Integrated browser based on the open source WebKit engine Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional) SQLite for structured data storage Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM Telephony (hardware dependent) Bluetooth, EDGE, 3G, and WiFi (hardware dependent) Camera, GPS, compass, and accelerometer (hardware dependent) Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE Opersys inc. () Introduction to Android App Development March 28, 2012 14 / 59
  • 15. Internal architecture Internal architecture - Google’s version Opersys inc. () Introduction to Android App Development March 28, 2012 15 / 59
  • 16. Internal architecture Internal architecture - the “real thing” Opersys inc. () Introduction to Android App Development March 28, 2012 16 / 59
  • 17. SDK set up and update SDK set up and update What’s in the SDK? Android-specific tools Eclipse plugin QEMU-based emulator Getting the SDK http://developer.android.com/sdk/index.html Prerequisites: Windows, Mac or Linux Eclipse 3.4 or later - (highly recommended) JDK 5 or 6 (gcj won’t do) Opersys inc. () Introduction to Android App Development March 28, 2012 17 / 59
  • 18. SDK set up and update SDK set up and update 1 Make sure prerequisites are installed 2 Install SDK 3 Install ADT plugin for Eclipse 4 Use “Android SDK and AVD Manager” (android cli tool) to install platform support Opersys inc. () Introduction to Android App Development March 28, 2012 18 / 59
  • 19. Basic debugging tricks Basic debugging tricks Logging - Use LogCat to view (either using ’adb logcat’ or Ecplise): import android.util.Log; ... Log.d(DTAG, "onConfigurationChanged() called"); Log output: D/PhoneApp( 229): updateProximitySensorMode: state = IDLE D/PhoneApp( 229): updateProximitySensorMode: lock already released. W/dalvikvm( 824): threadid=1: thread exiting with uncaught exception (group=0 E/AndroidRuntime( 824): FATAL EXCEPTION: main Toast messages - show up device UI: import android.widget.Toast; ... Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show(); Opersys inc. () Introduction to Android App Development March 28, 2012 19 / 59
  • 20. Basic debugging tricks Development and debugging tools Development and debugging tools android - manage AVDs and SDK components apkbuilder - creating .apk packages dx - converting .jar to .dex adb - debug bridge ddms - Dalvik debug monitor monkey - test UI randomly traceview - view app’s execution logs logcat - view system logs ... Opersys inc. () Introduction to Android App Development March 28, 2012 20 / 59
  • 21. Alternative app marketplaces Alternative app marketplaces App-manager has to be root to install apps User can circumvent by allowing install from “Unknown sources” :( Manufacturer and/or carrier can factory-install other “market” Amazon B&N NOOK Apps Verizon V Cast F-Droid: FOSS app backend Opersys inc. () Introduction to Android App Development March 28, 2012 21 / 59
  • 22. App Dev Intro App Dev Intro All app contents packaged into .apk: Compiled Java Resources Data Native code etc. .apk generated by aapttool .apk is what is downloaded by users to their device 1 apk = 1 app Opersys inc. () Introduction to Android App Development March 28, 2012 22 / 59
  • 23. App Dev Intro Apps live in isolated worlds: Each App is assigned its own UID: Separate permissions (ex: /home/foo vs. /home/bar) No files shared Every App is its own separate Linux process: Process startup/shutdown is automagic/on-demand No single point of failure Each process has its own Dalvik VM: No inter-app code interference No direct cross-app calls Exceptions: Can arrange for 2 apps = 1 UID (shared files) Can arrange for 2 apps of 1 UID = 1 Process Opersys inc. () Introduction to Android App Development March 28, 2012 23 / 59
  • 24. Application Components Application Components 1 App = N Components Apps can use components of other applications App processes are automagically started whenever any part is needed Ergo: N entry points, !1, and !main() Components: Activities Services Broadcast Receivers Content Providers Opersys inc. () Introduction to Android App Development March 28, 2012 24 / 59
  • 25. Application Components Activities Activities Visual interface for a single user interaction Activities are independent from one another public class Foo extends Activity { ... } 1 Activity = 1 default window, usually full-screen Visual content = hierarchy of views (Viewclass ): ex.: containers, buttons, scroll bars, etc. Activity.setContentView() = set root Viewclass Opersys inc. () Introduction to Android App Development March 28, 2012 25 / 59
  • 26. Application Components Services Services Background service Runs indefinitely Talk to service = bind to it public class Foo extends Service { ... } Runs in main app process Ergo: use accept()/fork() semantics Remote calls run on thread pool Opersys inc. () Introduction to Android App Development March 28, 2012 26 / 59
  • 27. Application Components Broadcast Receivers Broadcast Receivers Receive and react to broadcast announcement Usually system event: Ex.: low bat, new pic, timezone change Apps can also initiate broadcasts public class Foo extends BroadcastReceiver { ... } 1 App can have N Broadcast Receivers No UI, but can start Activity or send Notifications Opersys inc. () Introduction to Android App Development March 28, 2012 27 / 59
  • 28. Application Components Content Providers Content Providers Makes data available to other apps Data can be stored in FS or SQLite public class Foo extends ContentProvider { ... } Apps use ContentResolverobject to talk to Content Provider All IPC is transparent when using ContentResolverobject Opersys inc. () Introduction to Android App Development March 28, 2012 28 / 59
  • 29. Intents Intents Intent = asynchronous message w/ or w/o designated target Like a polymorphic Unix signal, but w/o required target Intents ”payload” held in Intentobject Intent Filters specified in Manifest file Opersys inc. () Introduction to Android App Development March 28, 2012 29 / 59
  • 30. Components activation and shut down Components activation and shut down Activity Service Content Provider Opersys inc. () Introduction to Android App Development March 28, 2012 30 / 59
  • 31. Components activation and shut down Activity Activity Activated through passing Intent to: Context.startActivity() Activity.startActivityForResult() Activity’s onCreate() doesn’t provide the Intent Use getIntent() to look at initial Intent Subsequent Intents sent to onNewIntent() callback Intent results sent to onActivityResult() callback Shut down: Self: finish() Other Activity started w/ startActivityForResult(): finishActivity() System Opersys inc. () Introduction to Android App Development March 28, 2012 31 / 59
  • 32. Components activation and shut down Service Service Activated through: Passing Intent to Context.startService() Call to Context.bindService() Both generate an onCreate() callback Context.startService() generates onStart() callback: Takes Intent as parameter Context.bindService() generates onBind() callback: Use RPC thereafter Shut down: Self: stopSelf() Other Component: Context.stopService() System Opersys inc. () Introduction to Android App Development March 28, 2012 32 / 59
  • 33. Components activation and shut down Broadcast Receiver Broadcast Receiver Send Intent through: Context.sendBroadcast() Context.sendOrderedBroadcast() Context.sendStickyBroadcast() Trigger onReceive() callback Active while it’s responding to broadcast message Can be shut down by system Opersys inc. () Introduction to Android App Development March 28, 2012 33 / 59
  • 34. Components activation and shut down Content Provider Content Provider Activated through request from ContentResolver Active while it’s responding to ContentResolver request Can be shut down by system Opersys inc. () Introduction to Android App Development March 28, 2012 34 / 59
  • 35. The Manifest file The Manifest file Informs system about app’s components XML format Always called AndroidManifest.xml Activity = <activity> ... static Service = <service> ... static Broadcast Receiver: Static = <receiver> Dynamic = Context.registerReceiver() Content Provider = <provider> ... static Opersys inc. () Introduction to Android App Development March 28, 2012 35 / 59
  • 36. The Manifest file <?xml version="1.0" encoding="utf-8"?> <manifest . . . > <application . . . > <activity android:name="com.example.project.FreneticAc android:icon="@drawable/small_pic.png" android:label="@string/freneticLabel" . . . > </activity> . . . </application> </manifest> Opersys inc. () Introduction to Android App Development March 28, 2012 36 / 59
  • 37. The Manifest file Two types of Intents: w/ explicitly named targets w/o explicitly named targets When no target is named, system uses Filters to locate best fit If Intent isn’t named in Filter, activation only on explicit naming Intent Filter for Launcher icon Activity: action: android.intent.action.MAIN category: android.intent.category.LAUNCHER Opersys inc. () Introduction to Android App Development March 28, 2012 37 / 59
  • 38. The Manifest file . . . <intent-filter . . . > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" / </intent-filter> <intent-filter . . . > <action android:name="com.example.project.BOUNCE" /> <data android:mimeType="image/jpeg" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> . . . Opersys inc. () Introduction to Android App Development March 28, 2012 38 / 59
  • 39. Processes and threads Processes and threads 1st time Components need to run: System starts Linux process Default: all Components of an app run in single process thread Defaults can be overriden: Run Components in other processes Spawn additional threads for any process Opersys inc. () Introduction to Android App Development March 28, 2012 39 / 59
  • 40. Processes and threads Processes Processes Default: all callbacks to any app Component are issued to the main process thread <activity>—<service>—<recipient>—<provider> have processattribute to override default: String name of process (default: same as app package name) If starts w/ ”:”, process ”private” to app is created for Component If starts w/ lowercase, Component runs in global process of that name if permissions allow Do NOT perform blocking/long operations in main process thread: Spawn threads instead Process termination/restart is at system’s discretion Therefore: Must manage Component Lifecycle Opersys inc. () Introduction to Android App Development March 28, 2012 40 / 59
  • 41. Processes and threads Threads Threads Create using the regular Java Threadobject Android API provides thread helper classes: Looper: for running a message loop with a thread Handler: for processing messages HandlerThread: for setting up a thread with a message loop Opersys inc. () Introduction to Android App Development March 28, 2012 41 / 59
  • 42. Processes and threads Remote procedure calls Remote procedure calls Android RPCs = Binder mechanism Binder is a low-level functionality, not used as-is Instead: must define interface using Interface Definition Language (IDL) IDL fed to aidltool to generate Java interface definitions Opersys inc. () Introduction to Android App Development March 28, 2012 42 / 59
  • 43. Processes and threads Remote procedure calls Opersys inc. () Introduction to Android App Development March 28, 2012 43 / 59
  • 44. Processes and threads Remote procedure calls Code generated by aidltool takes care of all IPC details Typically, the invoked party is a Service Client: Implements onServiceConnected() callback, receives IBinder object Implements onServiceDisconnected() callback Calls bindService() to connect to Service Service: Subclasses aidltool -generated Stub to implement interface onBind() callback decides whether or not to accept connection based on Intent onBind() returns instance of Stub subclass All RPC calls are synchronous Opersys inc. () Introduction to Android App Development March 28, 2012 44 / 59
  • 45. Processes and threads Thread-safe methods Thread-safe methods Remote callbacks don’t run in Component’s process main thread Remote callbacks run from a thread pool: Methods exposed by an IBinder Stub subclass ContentProvider methods (query(), insert(), delete(), update(), getType()) Since many clients can call the same methods: methods exposed remotely must be thread safe: ’synchronized’ keyword java.lang.Thread java.util.concurrent* ... Opersys inc. () Introduction to Android App Development March 28, 2012 45 / 59
  • 46. Component Lifecycles Component Lifecycles System automagically starts/stops/kills processes System triggers Lifecycle callbacks when relevant Ergo: Must manage Component Lifecycle Some Components are more complex to manage than others Opersys inc. () Introduction to Android App Development March 28, 2012 46 / 59
  • 47. Component Lifecycles Activity Lifecycle Activity Lifecycle Activity’s states: Resumed (running): top of Task’s Activity stack Paused: lost focus but still visible Stopped: completely hidden to user Paused or stopped Activities are garbage-collectable Opersys inc. () Introduction to Android App Development March 28, 2012 47 / 59
  • 48. Component Lifecycles Activity Lifecycle Opersys inc. () Introduction to Android App Development March 28, 2012 48 / 59
  • 49. Component Lifecycles Activity Lifecycle System configuration changes If config changes, system will stop and restart Activity w/ new resources Screen orientation change = config change Either let system restart Activity and save/restore its state: Bundle, for small amounts of data Object, for large/non-trivial data (sockets, bitmaps, etc.) Or handle the config change yourself Opersys inc. () Introduction to Android App Development March 28, 2012 49 / 59
  • 50. Component Lifecycles Service Lifecycle Service Lifecycle Core callbacks: onCreate() onDestroy() Ways to operate a Service (not mutually exclusive): Start/stop the service Bind/unbind to the Service Opersys inc. () Introduction to Android App Development March 28, 2012 50 / 59
  • 51. Component Lifecycles Service Lifecycle Opersys inc. () Introduction to Android App Development March 28, 2012 51 / 59
  • 52. Component Lifecycles Broadcast Receiver Lifecycle Broadcast Receiver Lifecycle Only has onReceive() Considered active only while servicing this call Encompassing process ”protected” while Broadcast Receiver active Should do minimal work and return Should start service for long-running work Opersys inc. () Introduction to Android App Development March 28, 2012 52 / 59
  • 53. Component Lifecycles Content Provider Lifecycle Content Provider Lifecycle Only has onCreate() Implement Content Provider REST-like callbacks: query(Uri, String[], String, String[], String) insert(Uri, ContentValues) update(Uri, ContentValues, String, String[]) delete(Uri, String, String[]) getType(Uri) returns Content Provider data MIME type Opersys inc. () Introduction to Android App Development March 28, 2012 53 / 59
  • 54. Component Lifecycles Processes and Lifecycles Processes and Lifecycles Android’s process management is predicated on low-memory: Processes are started and remain active as long as RAM is available When RAM is low, system starts ”garbage collecting” Processes of lower importance are killed to free up space System continously maintains an active Components ”importance hierarchy” System tries to provide ”priority inheritance” Hierarchy: 1 Foreground process - killed as a last resort 2 Visible process 3 Service process 4 Background process 5 Empty process Opersys inc. () Introduction to Android App Development March 28, 2012 54 / 59
  • 55. UI Basics UI Basics UI is built on top of Viewobject and ViewGroupobject Viewclass is root for subclassed ”widgets” (text fields, buttons, etc.) ViewGroupclass is root for subclassed ”layouts” Viewobject = rectangle on screen. Handled by object for rectangle: Measurement Layout Drawing Focus change Scrolling Key/gesture interactions Opersys inc. () Introduction to Android App Development March 28, 2012 55 / 59
  • 56. UI Basics Widgets Widgets Widget = Viewobject w/ specific UI: Buttons Checkboxes Text-entry field Date picker Clock Zoom controls See android.widgetpackage You can create custom widgets Opersys inc. () Introduction to Android App Development March 28, 2012 56 / 59
  • 57. UI Basics UI events UI events To get events: Define and register event listener, or Override existing one of widget’s callbacks Event listener: Most common case Viewclass contains collections of nested interfaces w/ callbacks Must implement interface/callback and register it to Viewobject Generic form: On*Listenerinterface & On*() callback; View.setOn*Listener() Opersys inc. () Introduction to Android App Development March 28, 2012 57 / 59
  • 58. UI Basics Menus Menus Types: Main app menu view through the MENU key Contextual menus Menus are Viewobject hierarchies too However: Hierarchy is automatically created by system, not you No need to register event listeners Instead, implement callbacks for: Populating menu: onCreateOptionsMenu() onCreateContextMenu() Handling menu selection: onOptionsItemSelected() onContextItemSelected() Opersys inc. () Introduction to Android App Development March 28, 2012 58 / 59
  • 59. Demos ... Demos ... Opersys inc. () Introduction to Android App Development March 28, 2012 59 / 59