SlideShare a Scribd company logo
Jumpstart to Android
App development

Lars Vogel
http://www.vogella.de
Twitter: @vogella
What is Android?

Fundamentals

Constructs of Android

Live Coding

Q&A
About me – Lars Vogel

Independent Eclipse and Android consultant,
trainer and book author

Eclipse committer

Maintains http://www.vogella.de Java, Eclipse
and Android related Tutorials with more then a
million visitors per month.
More Android Sessions:


Wednesday, 11.10 -
12.00 - So whats so cool about Android 4.x

Thuersday – Friday – Full day Android training
Android Experience?
What is
Android?
Android from 10 000 feet
- Open Source
- Full stack based on Linux
- Java programming interface
- Project is lead by Google
- Tooling available for Eclipse (and other IDE's)
Android Jumpstart Jfokus
On Android you develop in Java




(There is also the NDK which allows development in C / C++...)
Overview of the API Capabilities


 Rich UI components

 Threads and Background Processing

 Full network stack (Http, JSON)

 Database available

 Images

 Access to the hardware (GPS, Camera,
 Phone)

 and much more............
Its like
programming for
hardware which is
10 years old
… with insame
performance
requirements
On Android you develop in Java


Really?
Android Programming




 You use the Java
 programming language
 but Android does not run
 Java Bytecode
Dalvik

Run Dalvik Executable Code (.dex)
Tool dx converts Java Bytecode into .dex

•   Register based VM vrs. stack based as the JVM
•   .dex Files contain more then one class
•   Approx. 50 % of the size of a class file
•   op codes are two bytes instead of one in the JVM
•   As of Android 2.2 Dalvik JIT compiler
•   Primary engineer: Dan Bornstein
Developer
Toolchain
Android Development Tools (ADT)
for Eclipse



Eclipse based tooling
• Provide the emulator
• Wizard for creating new project
• Additional Tooling, e.g views
Emulator

           QEMU-based ARM emulator runs
           same image as a device

           Use same toolchain to work with
           device or emulator

           Inital startup is
           slooooowwwwww.....
Demo
AndroidManifest.xml

• General configuration files for
  your application
• Contains all component
  definitions of your appication
Resources from /res are
automatically „indexed“
ADT maintains a
reference to all
resources in the R.java
Main Android programming
       constructs
      Activity


          Views

             Intents

                 Broadcast Receiver

                  Services

                       ContentProvider
Context
Context
Global information about an application environment.

Allows access to application-specific resources and classes

Support application-level operations such as launching
activities, broadcasting and receiving intents, etc.

Basically all Android classes need a context

Activity extends Context
Demo
Activities project
    Your first
Activity
Extends Context

An activity is a single, focused
thing that the user can do.

Kind of a screen but not entirely...
View vrs ViewGroup


android.viewView: UI Widget
 - Button
 - TextView
 - EditText
Layouts
android.view.ViewGroup
 - Layout
 - extends View
• Layouts are typically defined via XML
  files (resources)
• You can assign properties to the
  layout elements to influence their
  behavior.
Demo – Hello JFokus
Andoid is
allowed to kill
your app to
save memory.
Life Cyle of an Activity



void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
States of an Activity
• Active/ Running – Visible and interacts with user
• Paused – still visible but partically obscured (other
  transparant activity, dialog or the phone screen),
  instance is running but might be killed by the
  system
• Stopped – completely obscured, e.g. User presses
  the home screen button, instance is running but
  might be killed by the system
• Killed – if stopped or paused, system might calling
  finish or by killing it
Android Jumpstart Jfokus
To test flip your
     device
Def
    inin
        gA
          ctiv
               itie
                    s
Calling Activities


Calling Activities
creates a stack ->
Back button goes
back to the
previous activity


-> Think of it as a
stack of cards
Defining Activities
• Create a class which extends
  „Activitiy“
• Create an entry in
  „AndroidManifest.xml“ for the activity.
• <activity
  android:name=“MyNewActivity“></a
  ctivity>
I had only the
best intents....
Intents


Message passing mechanism to start
Activities, Services or to trigger
(system) events.

Allow modular architecture

Can contain data (extra)
Intents



 • Explicit: Asking someone to do something
 • Implicit: Asking the system who can do something


                   Intent
Demo Intents
Implicit Intents

• new Intent(Intent.ACTION_VIEW,
  Uri.parse("http://www.vogella.de"));
• new Intent(Intent.ACTION_CALL, Uri.parse("tel:
  (+49)12345789"));
• new Intent(Intent.ACTION_VIEW,
  Uri.parse("geo:50.123,7.1434?z=19"));
• new
  Intent("android.media.action.IMAGE_CAPTURE");
Gettings results
Intent intent = new
Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, 0);

public void onActivityResult(int requestCode, int
resultCode, Intent data) {
 if (resultCode == Activity.RESULT_OK && requestCode
== 0) {
   String result = data.toURI();
   Toast.makeText(this, result, Toast.LENGTH_LONG);
 }
}
XML
Drawables
XML Drawables
• XML Resources
• Can be used to define transitions,
  shapes or state
  A drawable resource is something
  that can be drawn to the screen
Services and receiver
Services

Allow real multitasking and background processing

De-coupled from the Activity life-cyle
Services

Service runs in the background without interacting with the user.

Android provides a multitude of system services

•   NotificationService
•   VibratorService
•   LocationService
•   AlarmService
•   ....

Access via context.getSystemService(Context.CONST);

You can define your own service for things that should run in the
background
Notification
 Manager
  Demo
Services

Service runs in the background without interacting with the user.

Android provides a multitude of system services

•   NotificationService
•   VibratorService
•   LocationService
•   AlarmService
•   ....

Access via context.getSystemService(Context.CONST);

You can define your own service for things that should run in the
background
Broadcast Receiver – Listen to events


 Example:
 BATTERY_LOW,
 ACTION_BOOT_COMPLETED
 android.intent.action.PHONE_STATE


 Defined statically in manifest or temporary
 via code

 Broadcast Receiver only works within the
 onReceive() method

 C2DM
Own Service
• Extend Service or IntentService
• start with startService(Intent) or
  bindService(Intent).
• onStartCommand is called in the service
• bindService gets a ServiceConnection as
  parameter which receives a Binder object
  which can be used to communicate with the
  service
How to start a service


 Broadcast Receiver –
 Event: BOOT_COMPLETED

 Or

 ACTION_EXTERNAL_APPLICATIONS_A
 VAILABLE

 startService in the onReceiveMethod()

 Timer Service
 Start BroadcastReceiver which starts the
 service
Demo
    alarm
receiver.phone
Security
Each apps gets into own Linux user
and runs in its own process
Android Application requires
explicit permissions, e.g. for
• DB access
•   Phone access
•   Contacts
•   Internet
•   System messages
Background Processing
Be fast!

Avoid ApplicationNotResponding
Error
Use Threads (not the UI one)
• Long running stuff should run in the
  background
• Thread cannot modify the UI
• Synch with the UI thread

    runOnUiThread(new Runnable)
Handler and AsyncTask
• Handler runs in the UI thread
• Allows to send Message object and or
  to send Runnable to it
      handler.sendMessage(msg)
     handler.post(runnable)

• AsyncTask for more complex work
AsyncTask
• To use it subclass it

AsyncTask <TypeOfVarArgParams , ProgressValue ,
ResultValue>

doInBackground() – Do the work

onPostExecute() – Update the UI
Saving the thread
• If a thread runs in your Activity you
  want to save it.
Lifecycle - Thread
• If Activity is destroyed the Threads should be
  preserved.
• Close down Dialogs in the onDestroy() method
• One object can be saved via
  onRetainConConfigurationInstance()
• Access via getLastNonConfigurationInstance()
• Only use static inner classes in your Threads
  otherwise you create a memory leakage.
Option Menus and
       Action Bar
Option Menu & Action Bar
• Option Menu displays if „Menu“
  button is pressed
• You can decided if the entries are
  displayed in the Action Bar or in a
  menu
• Use „ifRoom“ flag if possible.
Option Menu & Action Bar
• Option Menu displays if „Menu“
  button is pressed
• You can decided if the entries are
  displayed in the Action Bar or in a
  menu
• Use „ifRoom“ flag if possible.
Preferences
Read and Write Preferences
• Key – Value pairs

• PreferenceManager.getDefaultShared
  Preferences(this);
 – To read: getString(key), get...
 – To change use edit(), putType(key, value),
   commit()
• To maintain use PreferenceActivity
PreferenceActivity
• Create resource file (preference)
• New Activity which extends
  PreferenceActivity
• To add preferences:
 – addPreferencesFromResource(R.xml.prefer
   ences);
• Saving and edits will be handled
  automatically by the
  PreferenceActivity
ListView
ListView


Can be used to display a list of items

Gets his data from an adapter
Adapter
                       Data for ListView
                       defined by Adapter




View per row defined
by Adapter
ListActivity


ListActivity has already a predefined ListView with the id @android:id/list
which will be used automatically.

Provides nice method hooks for typical operations on lists

If you define your own layout this layout must contain a ListView with the
ID:

@+android:id/list
What if the layout should
     not be static?
Define your own Adapter
Reuse existing rows


If convertView is not null -> reuse it

Saves memory and CPU power (approx. 150 % faster according to
Google IO)

Holder Pattern saves 25%
Views and Touch
There is more....
I have
feelings

           Camera API
           Motion Detection
           Location API (GIS)
           Heat Sensor
           Accelerator
Example Camera API
I can talk and
     hear


Internet (java.net, Apache HttpClient, JSON...)
Bluetooth
Email
SMS
VoIP (SIP (Session Initiation Protocol))
Other Capabilities

Push to device

Interactive Widgets on the homescreen

Live Wallpapers (as background)

Animations and Styling

Simple List handling

(Multi-) Touch

NFC

Canvas / OpenGL ES (Game programming....)

Native Rendering
Android 4.0
Whats so cool about Android 4.0?




• Come to my talk on Wednesday... ;-)
Summary
Android powerful and well-
 designed development
         platform

   Easy to get started

 Power to the developer
Android Jumpstart Jfokus
Android: Where to go
          from here:

Android Introduction Tutorial
   http://www.vogella.de/articles/Android/article.html

Or Google for „Android Development Tutorial“

Android SQLite and ContentProvider Book
http://www.amazon.com/dp/B006YUWEFE


More on Android
http://www.vogella.de/android.html
Thank you
For further questions:


Lars.Vogel@gmail.com
http://www.vogella.de
Twitter http://www.twitter.com/vogella
Google+ http://gplus.to/vogella
License &
           Acknowledgements
•   This work is licensed under the Creative Commons
    Attribution-Noncommercial-No Derivative Works 3.0
    Germany License




    – See http://creativecommons.org/licenses/by-nc-nd/3.0/de/deed.en_US

More Related Content

PDF
Getting started with Verold and Three.js
PDF
Oracle MAF real life OOW.pptx
PPTX
Creative Coders March 2013 - Introducing Starling Framework
PDF
Introduction to html5 game programming with impact js
PPT
Ios - Introduction to memory management
PPTX
Efficient Android Threading
PDF
UI Automation_White_CodedUI common problems and tricks
PDF
The java swing_tutorial
Getting started with Verold and Three.js
Oracle MAF real life OOW.pptx
Creative Coders March 2013 - Introducing Starling Framework
Introduction to html5 game programming with impact js
Ios - Introduction to memory management
Efficient Android Threading
UI Automation_White_CodedUI common problems and tricks
The java swing_tutorial

Similar to Android Jumpstart Jfokus (20)

PPT
Unit I- ANDROID OVERVIEW.ppt
PPT
Lec005 android start_program
PPT
PDF
Android Workshop_1
PDF
Android101
PDF
Introduction to Andriod Studio Lecture note: Android Development Lecture 1.pdf
PPTX
02. Android application development_Lec2.pptx
PDF
Android Development
PPTX
Android Introduction on Java Forum Stuttgart 11
DOCX
Android Tutorial For Beginners Part-1
PDF
PPTX
Unit-1.2 Android-Activities, Fragments, and Intents (1).pptx
PPT
Introduction to android sessions new
PPTX
Dori waldman android _course
PDF
Introduction to Android Development
PPTX
Introduction to Android Development
PPT
introductiontoandroiddevelopment (2).ppt
PPTX
Android Programming made easy
PDF
Explore Android Internals
PDF
Introduction to Android Development and Security
Unit I- ANDROID OVERVIEW.ppt
Lec005 android start_program
Android Workshop_1
Android101
Introduction to Andriod Studio Lecture note: Android Development Lecture 1.pdf
02. Android application development_Lec2.pptx
Android Development
Android Introduction on Java Forum Stuttgart 11
Android Tutorial For Beginners Part-1
Unit-1.2 Android-Activities, Fragments, and Intents (1).pptx
Introduction to android sessions new
Dori waldman android _course
Introduction to Android Development
Introduction to Android Development
introductiontoandroiddevelopment (2).ppt
Android Programming made easy
Explore Android Internals
Introduction to Android Development and Security
Ad

More from Lars Vogel (20)

PDF
Eclipse IDE and Platform news on Fosdem 2020
PDF
Eclipse platform news and how to contribute to the Eclipse Open Source project
PDF
Android design and Custom views
PDF
How to become an Eclipse committer in 20 minutes and fork the IDE
PDF
Building beautiful User Interface in Android
PDF
What is so cool about Android 4.0
PDF
What is so cool about Android 4.0?
PDF
Eclipse e4 - Google Eclipse Day
PPT
Android C2DM Presentation at O'Reilly AndroidOpen Conference
PPTX
Android Overview (Karlsruhe VKSI)
PPT
Eclipse 2011 Hot Topics
PPT
Google App Engine for Java
PPTX
Android Cloud to Device Messaging with the Google App Engine
PDF
Google App Engine for Java
PPTX
Eclipse 4.0 - Dynamic Models
PDF
Eclipse 40 Labs- Eclipse Summit Europe 2010
PDF
Eclipse 40 - Eclipse Summit Europe 2010
PPTX
Eclipse 40 and Eclipse e4
PPTX
Eclipse RCP Overview @ Rheinjug
PPTX
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse IDE and Platform news on Fosdem 2020
Eclipse platform news and how to contribute to the Eclipse Open Source project
Android design and Custom views
How to become an Eclipse committer in 20 minutes and fork the IDE
Building beautiful User Interface in Android
What is so cool about Android 4.0
What is so cool about Android 4.0?
Eclipse e4 - Google Eclipse Day
Android C2DM Presentation at O'Reilly AndroidOpen Conference
Android Overview (Karlsruhe VKSI)
Eclipse 2011 Hot Topics
Google App Engine for Java
Android Cloud to Device Messaging with the Google App Engine
Google App Engine for Java
Eclipse 4.0 - Dynamic Models
Eclipse 40 Labs- Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 and Eclipse e4
Eclipse RCP Overview @ Rheinjug
Eclipse e4 on Java Forum Stuttgart 2010
Ad

Recently uploaded (20)

PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Encapsulation theory and applications.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Approach and Philosophy of On baking technology
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Monthly Chronicles - July 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The AUB Centre for AI in Media Proposal.docx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Big Data Technologies - Introduction.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
NewMind AI Weekly Chronicles - August'25 Week I
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Encapsulation theory and applications.pdf
Machine learning based COVID-19 study performance prediction
Spectral efficient network and resource selection model in 5G networks
Encapsulation_ Review paper, used for researhc scholars
Approach and Philosophy of On baking technology

Android Jumpstart Jfokus

  • 1. Jumpstart to Android App development Lars Vogel http://www.vogella.de Twitter: @vogella
  • 2. What is Android? Fundamentals Constructs of Android Live Coding Q&A
  • 3. About me – Lars Vogel Independent Eclipse and Android consultant, trainer and book author Eclipse committer Maintains http://www.vogella.de Java, Eclipse and Android related Tutorials with more then a million visitors per month.
  • 4. More Android Sessions: Wednesday, 11.10 - 12.00 - So whats so cool about Android 4.x Thuersday – Friday – Full day Android training
  • 7. Android from 10 000 feet - Open Source - Full stack based on Linux - Java programming interface - Project is lead by Google - Tooling available for Eclipse (and other IDE's)
  • 9. On Android you develop in Java (There is also the NDK which allows development in C / C++...)
  • 10. Overview of the API Capabilities Rich UI components Threads and Background Processing Full network stack (Http, JSON) Database available Images Access to the hardware (GPS, Camera, Phone) and much more............
  • 11. Its like programming for hardware which is 10 years old
  • 13. On Android you develop in Java Really?
  • 14. Android Programming You use the Java programming language but Android does not run Java Bytecode
  • 15. Dalvik Run Dalvik Executable Code (.dex) Tool dx converts Java Bytecode into .dex • Register based VM vrs. stack based as the JVM • .dex Files contain more then one class • Approx. 50 % of the size of a class file • op codes are two bytes instead of one in the JVM • As of Android 2.2 Dalvik JIT compiler • Primary engineer: Dan Bornstein
  • 17. Android Development Tools (ADT) for Eclipse Eclipse based tooling • Provide the emulator • Wizard for creating new project • Additional Tooling, e.g views
  • 18. Emulator QEMU-based ARM emulator runs same image as a device Use same toolchain to work with device or emulator Inital startup is slooooowwwwww.....
  • 19. Demo
  • 20. AndroidManifest.xml • General configuration files for your application • Contains all component definitions of your appication
  • 21. Resources from /res are automatically „indexed“
  • 22. ADT maintains a reference to all resources in the R.java
  • 23. Main Android programming constructs Activity Views Intents Broadcast Receiver Services ContentProvider
  • 25. Context Global information about an application environment. Allows access to application-specific resources and classes Support application-level operations such as launching activities, broadcasting and receiving intents, etc. Basically all Android classes need a context Activity extends Context
  • 27. Activity Extends Context An activity is a single, focused thing that the user can do. Kind of a screen but not entirely...
  • 28. View vrs ViewGroup android.viewView: UI Widget - Button - TextView - EditText
  • 29. Layouts android.view.ViewGroup - Layout - extends View • Layouts are typically defined via XML files (resources) • You can assign properties to the layout elements to influence their behavior.
  • 30. Demo – Hello JFokus
  • 31. Andoid is allowed to kill your app to save memory.
  • 32. Life Cyle of an Activity void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy()
  • 33. States of an Activity • Active/ Running – Visible and interacts with user • Paused – still visible but partically obscured (other transparant activity, dialog or the phone screen), instance is running but might be killed by the system • Stopped – completely obscured, e.g. User presses the home screen button, instance is running but might be killed by the system • Killed – if stopped or paused, system might calling finish or by killing it
  • 35. To test flip your device
  • 36. Def inin gA ctiv itie s
  • 37. Calling Activities Calling Activities creates a stack -> Back button goes back to the previous activity -> Think of it as a stack of cards
  • 38. Defining Activities • Create a class which extends „Activitiy“ • Create an entry in „AndroidManifest.xml“ for the activity. • <activity android:name=“MyNewActivity“></a ctivity>
  • 39. I had only the best intents....
  • 40. Intents Message passing mechanism to start Activities, Services or to trigger (system) events. Allow modular architecture Can contain data (extra)
  • 41. Intents • Explicit: Asking someone to do something • Implicit: Asking the system who can do something Intent
  • 43. Implicit Intents • new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.vogella.de")); • new Intent(Intent.ACTION_CALL, Uri.parse("tel: (+49)12345789")); • new Intent(Intent.ACTION_VIEW, Uri.parse("geo:50.123,7.1434?z=19")); • new Intent("android.media.action.IMAGE_CAPTURE");
  • 44. Gettings results Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, 0); public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK && requestCode == 0) { String result = data.toURI(); Toast.makeText(this, result, Toast.LENGTH_LONG); } }
  • 46. XML Drawables • XML Resources • Can be used to define transitions, shapes or state A drawable resource is something that can be drawn to the screen
  • 48. Services Allow real multitasking and background processing De-coupled from the Activity life-cyle
  • 49. Services Service runs in the background without interacting with the user. Android provides a multitude of system services • NotificationService • VibratorService • LocationService • AlarmService • .... Access via context.getSystemService(Context.CONST); You can define your own service for things that should run in the background
  • 51. Services Service runs in the background without interacting with the user. Android provides a multitude of system services • NotificationService • VibratorService • LocationService • AlarmService • .... Access via context.getSystemService(Context.CONST); You can define your own service for things that should run in the background
  • 52. Broadcast Receiver – Listen to events Example: BATTERY_LOW, ACTION_BOOT_COMPLETED android.intent.action.PHONE_STATE Defined statically in manifest or temporary via code Broadcast Receiver only works within the onReceive() method C2DM
  • 53. Own Service • Extend Service or IntentService • start with startService(Intent) or bindService(Intent). • onStartCommand is called in the service • bindService gets a ServiceConnection as parameter which receives a Binder object which can be used to communicate with the service
  • 54. How to start a service Broadcast Receiver – Event: BOOT_COMPLETED Or ACTION_EXTERNAL_APPLICATIONS_A VAILABLE startService in the onReceiveMethod() Timer Service Start BroadcastReceiver which starts the service
  • 55. Demo alarm receiver.phone
  • 57. Each apps gets into own Linux user and runs in its own process
  • 58. Android Application requires explicit permissions, e.g. for • DB access • Phone access • Contacts • Internet • System messages
  • 61. Use Threads (not the UI one) • Long running stuff should run in the background • Thread cannot modify the UI • Synch with the UI thread runOnUiThread(new Runnable)
  • 62. Handler and AsyncTask • Handler runs in the UI thread • Allows to send Message object and or to send Runnable to it handler.sendMessage(msg) handler.post(runnable) • AsyncTask for more complex work
  • 63. AsyncTask • To use it subclass it AsyncTask <TypeOfVarArgParams , ProgressValue , ResultValue> doInBackground() – Do the work onPostExecute() – Update the UI
  • 64. Saving the thread • If a thread runs in your Activity you want to save it.
  • 65. Lifecycle - Thread • If Activity is destroyed the Threads should be preserved. • Close down Dialogs in the onDestroy() method • One object can be saved via onRetainConConfigurationInstance() • Access via getLastNonConfigurationInstance() • Only use static inner classes in your Threads otherwise you create a memory leakage.
  • 66. Option Menus and Action Bar
  • 67. Option Menu & Action Bar • Option Menu displays if „Menu“ button is pressed • You can decided if the entries are displayed in the Action Bar or in a menu • Use „ifRoom“ flag if possible.
  • 68. Option Menu & Action Bar • Option Menu displays if „Menu“ button is pressed • You can decided if the entries are displayed in the Action Bar or in a menu • Use „ifRoom“ flag if possible.
  • 70. Read and Write Preferences • Key – Value pairs • PreferenceManager.getDefaultShared Preferences(this); – To read: getString(key), get... – To change use edit(), putType(key, value), commit() • To maintain use PreferenceActivity
  • 71. PreferenceActivity • Create resource file (preference) • New Activity which extends PreferenceActivity • To add preferences: – addPreferencesFromResource(R.xml.prefer ences); • Saving and edits will be handled automatically by the PreferenceActivity
  • 73. ListView Can be used to display a list of items Gets his data from an adapter
  • 74. Adapter Data for ListView defined by Adapter View per row defined by Adapter
  • 75. ListActivity ListActivity has already a predefined ListView with the id @android:id/list which will be used automatically. Provides nice method hooks for typical operations on lists If you define your own layout this layout must contain a ListView with the ID: @+android:id/list
  • 76. What if the layout should not be static?
  • 77. Define your own Adapter
  • 78. Reuse existing rows If convertView is not null -> reuse it Saves memory and CPU power (approx. 150 % faster according to Google IO) Holder Pattern saves 25%
  • 81. I have feelings Camera API Motion Detection Location API (GIS) Heat Sensor Accelerator
  • 83. I can talk and hear Internet (java.net, Apache HttpClient, JSON...) Bluetooth Email SMS VoIP (SIP (Session Initiation Protocol))
  • 84. Other Capabilities Push to device Interactive Widgets on the homescreen Live Wallpapers (as background) Animations and Styling Simple List handling (Multi-) Touch NFC Canvas / OpenGL ES (Game programming....) Native Rendering
  • 86. Whats so cool about Android 4.0? • Come to my talk on Wednesday... ;-)
  • 87. Summary Android powerful and well- designed development platform Easy to get started Power to the developer
  • 89. Android: Where to go from here: Android Introduction Tutorial http://www.vogella.de/articles/Android/article.html Or Google for „Android Development Tutorial“ Android SQLite and ContentProvider Book http://www.amazon.com/dp/B006YUWEFE More on Android http://www.vogella.de/android.html
  • 90. Thank you For further questions: Lars.Vogel@gmail.com http://www.vogella.de Twitter http://www.twitter.com/vogella Google+ http://gplus.to/vogella
  • 91. License & Acknowledgements • This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License – See http://creativecommons.org/licenses/by-nc-nd/3.0/de/deed.en_US