27
Android Architecture Rhama Arya W. @arya199 www.mreunion-labs.net Thursday, December 15, 11

December 15

Embed Size (px)

DESCRIPTION

My slides as a guest lecturer in University Indraprasta PGRI Indonesia December 15, 2011.

Citation preview

Page 1: December 15

Android ArchitectureRhama Arya W.

@arya199

www.mreunion-labs.net

Thursday, December 15, 11

Page 2: December 15

Mreunion Labs

March 2010

Bootstrapped startup

Android first

Thursday, December 15, 11

Page 3: December 15

Agenda

• Introduction to Android

• Android Architecture

• Fundamental building blocks

• Ideas, execution, feedback, repeat

• Best practices

Thursday, December 15, 11

Page 4: December 15

Trends

• Mobile 2.0

• Android, iOS, WP7

• BlackBerry? Symbian?

• One year exp, published a real working Android app on the market, confident interview

Thursday, December 15, 11

Page 5: December 15

What is Android?

• Not really a Linux

• Based on a linux kernel but it’s not GNU

• No native windowing system

• No (limited?) glibc support

• No GNU/Linux utilities

Thursday, December 15, 11

Page 6: December 15

What is Android?

• Not just ‘Java on Linux.’

• Not part of the JCP

• Developers write primarily in a customized version of Java

• Similar to Java SE, but not equal

• No AWT, no Swing, no RMI

Thursday, December 15, 11

Page 7: December 15

What is Android?

• software stack that includes:

• operating system

• middleware

• key applications

• rich set of APIs

Thursday, December 15, 11

Page 8: December 15

Android Architecture

Thursday, December 15, 11

Page 9: December 15

Android Architecture• Linux kernel 2.6, providing

• Security

• Memory Management

• Process Management

• Network Stack

• Driver Model

• Abstraction Layer

Thursday, December 15, 11

Page 10: December 15

Android Architecture

• Dalvik Virtual Machine

• Runs optimized file format (.dex)

• Java .class/.jar files converted into .dex at build time

• Supports multiple virtual machine processes per VM

Thursday, December 15, 11

Page 11: December 15

Android Architecture

• Dalvik Virtual Machine

• 16bit, register based

• JIT from “Froyo”

• Concurrent GC from “Gingerbeard”

Thursday, December 15, 11

Page 12: December 15

Android Architecture

• C/C++ Libraries used by various components of the Android system

• Exposed to developers through the Android Application Framework

• SQLite, WebKit, Open GL, libc

Thursday, December 15, 11

Page 13: December 15

Android Architecture

• Android Application Framework exposing developers to Android’s inner capabilities

• View System, Content Providers, Telephony Manager, Location Manager, Notification Manager, Activity Manager, etc

• Javadoc styled API

• developer.android.com

Thursday, December 15, 11

Page 14: December 15

Assets

Application Fundamentals

You

XML .apk

Android Manifest

Java classes

multi-user Linux-like systemeach application is a different user

each application has its own processeach process has its own VM runs in

isolation from other applications

possible to have two applications to share the same Linux user ID

request permission to access device dataContentProviders

Thursday, December 15, 11

Page 15: December 15

Building Blocks

AndroidManifest.xml

Act

iviti

es

Vie

ws

Inte

nts

Serv

ices

Not

ifica

tions

Con

tent

Prov

ider

s

Thursday, December 15, 11

Page 16: December 15

Building Blocks

Thursday, December 15, 11

Page 17: December 15

Building Blocks

Activity A

Activity B

• stacked

• only one is visible

• only one is active

• new activities are placed on top

Thursday, December 15, 11

Page 18: December 15

Building Blocks

ViewGroup

ViewGroup View View

View View View

• Android’s UI

• know how to draw themselves

• respond to events

• described in XML

Thursday, December 15, 11

Page 19: December 15

Building Blocks

private View view;

public void onCreate(Bundle savedInstanceState) {...setContentView(R.layout.filename);...name = (View) findViewById(R.id.name);...

}

Thursday, December 15, 11

Page 20: December 15

Building Blocks

Activity A Activity BIntent

SQLite Database

Intents are used to move from Activity to Activity

Describes what the Application wants

Provide late runtime bindings

Thursday, December 15, 11

Page 21: December 15

Building Blocks

• Services

• Notifications

• ContentProviders

• SQLite Database

Thursday, December 15, 11

Page 22: December 15

“Idea is worthless. Execution is what matters.”

Thursday, December 15, 11

Page 23: December 15

Ideas

• Steal, simplify, beautify, improve

• Solve a real problem

• Exercise

• You don’t have to be the first. But be the best

Thursday, December 15, 11

Page 24: December 15

Execution

Start coding

Use it

Get feedback

One download = one customer = one problem.Prioritize

Learn to say “No”

Thursday, December 15, 11

Page 25: December 15

Best Practice

• Mobile users are impatient

• Fast, beautiful, intuitive apps

• Minimize actions required per function

• Competitions are fierce

• It’s not easy

Thursday, December 15, 11

Page 27: December 15

Thank [email protected]

@arya199

Thursday, December 15, 11