43
Overview of Android Frameworks (Part 1) Douglas C. Schmidt [email protected] www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA

Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

  • Upload
    others

  • View
    34

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

Overview of Android Frameworks (Part 1)

Douglas C. [email protected]

www.dre.vanderbilt.edu/~schmidt

Institute for Software Integrated Systems

Vanderbilt University Nashville, Tennessee, USA

Page 2: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

2

Learning Objectives in this Part of the Lesson• Understand how software frameworks are used in Android & Java

Page 3: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

3

Overview of Frameworksin Android

Page 4: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

4

Overview of Frameworks in Android & Java

See www.dre.vanderbilt.edu/~schmidt/frameworks.html

• A framework is an integrated set of components that provide a reusable architecture for a family of related apps

Page 5: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

5

Overview of Frameworks in Android & Java• Android & Java provide many frameworks

Page 6: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

6

Overview of Frameworks in Android & Java

See developer.android.com/training/multiple-threads/communicate-ui.html

• Android & Java provide many frameworks, e.g.• Android

• Android’s Activity framework manages lifecycle hook methodsdispatched in the UI thread

Page 7: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

7

Overview of Frameworks in Android & Java

See developer.android.com/training/basics/activity-lifecycle

• Android & Java provide many frameworks, e.g.• Android

• Android’s Activity framework manages lifecycle hook methodsdispatched in the UI thread• e.g., onCreate(), onStart(),

onStop(), onDestroy(), etc.

Page 8: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

8

public void onClick(View v) {...

}

ClickListenerObject

GUI Component(a button)

A GUI component sending an event to its registered listener

Overview of Frameworks in Android & Java• Android & Java provide many frameworks, e.g.

• Android• Android’s Activity framework

manages lifecycle hook methodsdispatched in the UI thread

• A listener for button clicks is called back by Android’s GUI framework

Page 9: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

9

Overview of Frameworks in Android & Java

See docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html

• Android & Java provide many frameworks, e.g.• Android• Java

• A thread calls the run() hookmethod of a runnable

Page 10: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

10

Overview of Frameworks in Android & Java

ExecutorService

WorkerThreads

run()

3.take()4.call()

callable

WorkQueue

2.offer()

callable

submit()

1.submit(callable)

Thread

See docs.oracle.com/javase/tutorial/essential/concurrency/executors.html

• Android & Java provide many frameworks, e.g.• Android• Java

• A thread calls the run() hookmethod of a runnable

• The ExecutorService calls the call() hook method of a callable

Page 11: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

11

• All Android apps run inside one or more software frameworks

Overview of Frameworks in Android & Java

Your mobile apps must use multiple Android frameworks

Service Manager

System Server Process

TelephonyManagerService

Activity ManagerService

DownloadManagerService

LocationManagerService

NotificationManagerService

PackageManagerService

WindowManagerService

…Service

Init

Zygote

Page 12: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

12

• All Android apps run inside one or more software frameworks• The motivation for using so

many frameworks is to enhance systematic reuse

Overview of Frameworks in Android & Java

See en.wikipedia.org/wiki/Code_reuse#Systematic_software_reuse

Page 13: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

13

• All Android apps run inside one or more software frameworks• The motivation for using so

many frameworks is to enhance systematic reuse

• Apps (& app developers) thus don’t need to “reinvent the wheel”

Overview of Frameworks in Android & Java

See en.wikipedia.org/wiki/Reinventing_the_wheel

Page 14: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

14

• Android frameworks use an event-driven programming model to integrate app classes into them

See en.wikipedia.org/wiki/Event-driven_programming

Overview of Frameworks in Android & Java

Page 15: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

15

• Android frameworks use an event-driven programming model to integrate app classes into them• In this programming paradigm, the

flow of the program is determined by events, e.g.• User actions (button presses)• Sensor inputs/outputs• Messages from other threads

Overview of Frameworks in Android & Java

See en.wikipedia.org/wiki/Event-driven_programming

Page 16: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

16

• The control flow in framework-driven Android apps traverses between the framework(s) & the app classes

Overview of Frameworks in Android & Java

Register for event

ApplicationCode

FrameworkCode

Eventoccurs

Eventoccurs

e.g., create an activity, service, or broadcast receiver

Page 17: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

17

• The control flow in framework-driven Android apps traverses between the framework(s) & the app classes

Overview of Frameworks in Android & Java

Register for event

Eventoccurs

Eventoccurs

ApplicationCode

FrameworkCode

e.g., a message occurs that triggers

a lifecycle event

Page 18: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

18

• The control flow in framework-driven Android apps traverses between the framework(s) & the app classes• A framework calls to app code

when an event of interest occurs

Overview of Frameworks in Android & Java

Register for event

Eventoccurs

Eventoccurs

ApplicationCode

FrameworkCode

e.g., dispatch the hook methods onCreate(),

onStart(), onReceive(), etc.

Page 19: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

19

Overview of Frameworks in Android & Java• The control flow in framework-driven

Android apps traverses between the framework(s) & the app classes• A framework calls to app code

when an event of interest occurs

Register for event

Eventoccurs

Eventoccurs

ApplicationCode

FrameworkCode

e.g., the app performs its processing in the context of framework thread(s)

Page 20: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

20

Overview of Frameworks in Android & Java• The control flow in framework-driven

Android apps traverses between the framework(s) & the app classes• A framework calls to app code

when an event of interest occurs • Control returns to the framework

after an app callback is done

Register for event

Eventoccurs

Eventoccurs

ApplicationCode

FrameworkCode

Page 21: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

21

Overview of Frameworks in Android & Java• The control flow in framework-driven

Android apps traverses between the framework(s) & the app classes• A framework calls to app code

when an event of interest occurs • Control returns to the framework

after an app callback is done• Lather, rinse, repeat until app is

done …

Register for event

Eventoccurs

Eventoccurs

ApplicationCode

FrameworkCode

See en.wikipedia.org/wiki/Lather,_rinse,_repeat

Page 22: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

22

Overview of Frameworks in Android & Java• The control flow in framework-driven

Android apps traverses between the framework(s) & the app classes• A framework calls to app code

when an event of interest occurs • Control returns to the framework

when an app callback is done• Lather, rinse, repeat until app is

done …

Register for event

Eventoccurs

Eventoccurs

ApplicationCode

FrameworkCode

See www.sei.cmu.edu/reports/95tr021.pdf

Separating concerns this way helps enhance systematic software reuse & improve various quality attributes

Page 23: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

23

End of Overview of Android Frameworks (Part 1)

Page 24: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

Overview of Android Frameworks (Part 2)

Douglas C. [email protected]

www.dre.vanderbilt.edu/~schmidt

Institute for Software Integrated Systems

Vanderbilt University Nashville, Tennessee, USA

Page 25: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

2

Learning Objectives in this Part of the Lesson• Understand how software frameworks are used in Android & Java• Identify key characteristics

of Android frameworks

Looper

FutureTaskMessageQueue

Handler

Runnable

Executor

……

Application-specific functionality

Domain-specific functionality for concurrent Android programs

Message

Hook method

Page 26: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

3

Key Characteristics of Android Frameworks

Page 27: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

4

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

See www.dre.vanderbilt.edu/~schmidt/PDF/Queue-04.pdf

Message

Page 28: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

5

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

See en.wikipedia.org/wiki/Inversion_of_control

Page 29: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

6

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks, e.g.• Framework controls the

main execution thread

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

Page 30: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

7

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks, e.g.• Framework controls the

main execution thread• Decides how & when to

run app codeLooper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

Page 31: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

8

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks, e.g.• Framework controls the

main execution thread• Decides how & when to

run app code• IoC is often called the

“Hollywood Principle”Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

See www.dre.vanderbilt.edu/~schmidt/hollywood-principle.txt

Page 32: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

9

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

e.g., an Android looperdispatches a handler, which then dispatches a runnable

Page 33: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

10

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

e.g., an Android looperdispatches a handler, which then dispatches a runnable

Page 34: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

11

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

The runnable dispatched via IoC doesn’t know/care how/why it was called back

e.g., an Android looperdispatches a handler, which then dispatches a runnable

Page 35: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

12

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality

Application-specific functionality

Domain-specific functionality for concurrent Android programs

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

Page 36: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

13

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality• e.g., provide capabilities

that can be reused in one or more domain(s)

Application-specific functionality

Domain-specific functionality for concurrent Android programs

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

Page 37: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

14

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality• e.g., provide capabilities

that can be reused in one or more domain(s)

Application-specific functionality

Domain-specific functionality for concurrent Android programs

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

Android’s frameworks focus on domains associated with mobile apps & services

Page 38: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

15

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality• e.g., provide capabilities

that can be reused in one or more domain(s)

Application-specific functionality

Domain-specific functionality for concurrent Android programs

Looper

FutureTaskMessageQueue

HandlerExecutor

…Runnable…

Message

Application-specific functionality can systematically reuse framework components

Page 39: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

16

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality

• Provide semi-complete (portions of) apps

Looper

FutureTaskMessageQueue

Handler

Runnable

Executor

……

Application-specific functionality

Domain-specific functionality for concurrent Android programs

Message

Page 40: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

17

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality

• Provide semi-complete (portions of) apps, e.g.• Hook methods plug app

logic into the frameworkLooper

FutureTaskMessageQueue

Handler

Runnable

Executor

……

See wiki.c2.com/?HookMethod & codebetter.com/davelaribee/2008/06/16/hook-methods

Application-specific functionality

Domain-specific functionality for concurrent Android programs

MessageHook methods implement patterns that customize

reusable framework classes to run app-specific logic

Page 41: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

18

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality

• Provide semi-complete (portions of) apps, e.g.• Hook methods plug app

logic into the framework• Mediate interactions among

common abstract & variantconcrete classes/interfaces

Looper

FutureTaskMessageQueue

Handler

Runnable

Executor

Message

……

Application-specific functionality

Domain-specific functionality for concurrent Android programs

Page 42: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

19

Key Characteristics of Android Frameworks• Android frameworks (like all frameworks) have three key characteristics

• Exhibit “inversion of control” (IoC) via callbacks

• Integrated domain-specific structure & functionality

• Provide semi-complete (portions of) apps, e.g.• Hook methods plug app

logic into the framework• Mediate interactions among

common abstract & variantconcrete classes/interfaces

Looper

FutureTaskMessageQueue

Handler

Runnable

Executor

Message

e.g., Runnable is a common abstract interface whose run() hook method

supports many concrete variants

Application-specific functionality

Domain-specific functionality for concurrent Android programs

See developer.android.com/reference/java/lang/Runnable.html

Page 43: Overview of Android Frameworks (Part 1) · Overview of Frameworks in Android & Java • Android & Java provide many frameworks, e.g. • Android • Android’s Activity framework

20

End of Overview of Android Frameworks (Part 2)