SlideShare a Scribd company logo
HIT3328 / HIT8328 Software Development for
Mobile Devices
Dr. Rajesh Vasa, 2011
Twitter: @rvasa
Blog: http://rvasa.blogspot.com
1
Lecture 04
Complex
Interactions
R. Vasa, 20112
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (using Global Variables)
•Application Manifest File
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 20113
Android Device User
Interaction
Menu
HomeBack
R. Vasa, 20114
Android App. is made of
Activities
Activity
View Group
Views
(Layout)
R. Vasa, 20115
User Interface (generally) Built
in XMLActivity
View Group
(Layout)
Activity Class (Java)
Layout Definition
(main.xml)
PresentatioPresentatio
nn
FunctionaliFunctionali
tyty
R. Vasa, 20116
The Android Way - Convention not
Config.
•Source code (src)
•Generated code (gen)
•Resources (res)
•Images (@drawable)
•Layout of app (layout)
•Constants/Strings (@strings)
Conventions to Follow
R. Vasa, 20117
Portrait and Landscape Layouts
Conventions to Follow
R. Vasa, 20118
Provide Resources @Multiple
Resolutions
High
Low
Medium
Conventions to Follow
R. Vasa, 20119
View Identifiers
@+id TAG creates new identifiers
Conventions to Follow
R. Vasa, 201110
UI Interaction Handling Pattern
•Component.setOn......Listener ( handler
)
•E.g. button.setOnClickListener
•Handler is an anonymous inner class
•On...Listener handler = new
On....Listener() {}
R. Vasa, 201111
Android Activity Life Cycle
onCreate is called
when Activity Starts
Activity is
re-started
when
orientatio
n
changes
R. Vasa, 201112
We Retrieve State On Creation
State retrieval
done here
onSaveInstanceState(
) is called from this
state
(Save Saved here)
R. Vasa, 201113
Bundle stores simple state
information
BundleBundle
putString(key, value)
putDouble(key, value)
putInt(key, value)
putStringArray(k
ey, value[])
It is a Key, Value store system
(like a Hash Table or a Hash Map)
Code Snippet:
state.putString("inputTemperature", inputTemp);
Code Snippet:
state.putString("inputTemperature", inputTemp);
R. Vasa, 201114
Working with Resources
off.png
Layout XML File
Via Java Code
on.png
R. Vasa, 201115
Short Problem 1 - Passing Data
•Context: In Android -- Apps are made of
Activities. So, each Screen is a “new”
Activity
• We want to pass data between Activities.
• But, Activity construction is managed by the
Dalvik runtime. That is, cannot pass data into
constructor.
•What would you prefer to do?
• Store shared data in global variables available to
ALL Activities.
• Move all data to a separate data layer.
• Send primitive data bundles between
R. Vasa, 201116
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (using Global Variables)
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201117
Wiring up Activities -- Typical
Use Case
Select
Back
Contact List Activity Contact Details
R. Vasa, 201118
Wiring up Activities -- Typical
Use Case
Select
Contact List Activity Contact Details
We re-use this
activity with
different data
Select
R. Vasa, 201119
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing options
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (using Global Variables)
•Passing Data Demo (using Intents)
R. Vasa, 201120
Data Passing Option - Global
Variables
•We can use Global Variables ... but,
•Widely accepted as a “risky” choice
•A few global variables are used in many
large systems (e.g. Linux Kernel Source
Code)
•Risk manageable in ‘small’ programs
•Good thread @ StackOverflow
http://goo.gl/EouH3
•Constant values as globals is ok (e.g.
R.java)
•Key Issue (to manage): How many objects
R. Vasa, 201121
Data Passing Option - Data
Layer
•We can store all data in a DBMS and access
it via a “data layer”
•Good idea when dealing with large /
complex blocks of data
•Overkill if we only need to store a few values
•The data store can be “in-memory”,
“on-disk”, and/or “on remote server”
R. Vasa, 201122
Data Passing Option - Bundles
•We can put data into a bundle and pass
this across using a “messaging
framework”
•Simple (once you understand the messaging
framework architecture)
•Persistence is not managed (like DBMS)
R. Vasa, 201123
Data Passing Option - iOS
Only!!
•You can pass data directly to methods in
another screen (UIViewController)
•UIViewController is approx. similar to Activity
•This option is not possible in Android -- this
was a “design intent” (design side-effect?)
R. Vasa, 201124
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (using Global Variables)
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201125
iOS Apps. are directly managed
by O/S
UIAppDelegateUIAppDelegate
UIViewController-UIViewController-
AA
UIViewController-UIViewController-
BB
UIViewController-UIViewController-
CC
UIAppDelegate has Life
CycleView Controllers are
managed by the App
internally
Image Source: Apple Inc.
Life Cycle => Managed by Operating
System
R. Vasa, 201126
Android Activities are Managed by
O/S
Activity-AActivity-A
Activity-CActivity-C
Activity-BActivity-B
ApplicatiApplicati
onon Activities have
a parent
application
Activity has Life CycleApplication is NOT
managed directly by
the O/SLife Cycle => Managed by Operating
System
R. Vasa, 201127
A Key Design Different (iOS Vs
Android)
Activity-AActivity-A
Activity-CActivity-C
Activity-BActivity-B
UIAppDelegateUIAppDelegate
UIViewController-UIViewController-
AA
UIViewController-UIViewController-
BB
UIViewController-UIViewController-
CC
ApplicatiApplicati
onon
UIAppDelegate has Life
Cycle
Activities have
a parent
application
Activity has Life CycleApplication is NOT
managed directly by
the O/SLife Cycle => Managed by Operating
System
View Controllers are
managed by the App
internally
R. Vasa, 201128
Activity Life Cycle Design
Choice....
•Android developers decided to give Activity
a life cycle (rather than the application)
•This makes each Activity similar to a
separate program
•Hence, data passing is restricted to:
•Global Variables (stored in Application
object)
•Data bundles passed via async. messages
•Data stored externally in files or DBMS
R. Vasa, 201129
Short Problem 2 - Activity Design
Choice
•Unlike iOS ViewControllers, Activities have
been modelled to be (almost) like
independent programs
•What is the likely rationale for such a
choice?
•What would be the benefits?
R. Vasa, 201130
Only One Activity is
Active/Running
•Only one Activity can
be in the ‘foreground’
•When Activity-A calls
Activity-B
•Activity-B will be visible
to the user
(foreground)
•Activity-A is paused
(background)
R. Vasa, 201131
Activities are Stacked in
Android
•All created activities are placed on a Stack
•Activities ‘popped’ when ‘Back Button’ is
pressed
Activity-AActivity-A
Foreground/Acti
ve
If only one activity
is on the Activity
Stack then “back”
button exits it
R. Vasa, 201132
Activities are Stacked in
Android
•All current activities are placed on a Stack
•Newly started activities come into
foreground
Activity-AActivity-A
Activity-BActivity-B
Foreground/Acti
ve
starts
Background/
Paused
Back button will
pop top most
activity from
stack
R. Vasa, 201133
Activities are Stacked in
Android
•As additional activities are started, older
activities go into background
•All activities are placed on Activity Stack
Activity-AActivity-A
Activity-BActivity-B
Activity-CActivity-CForeground/Acti
ve
starts
starts
Background/Pause
d
R. Vasa, 201134
Short Problem 3 - Activity
Stacking
•Consider the following situation,
Activity-AActivity-A
Activity-BActivity-B
Activity-CActivity-C
starts
starts
Activity-AActivity-A
starts
Are these activities
the same object?
Ponder the interaction design
implications .....
Will Back Button Exit the
App?
R. Vasa, 201135
Lets get our feet wet
R. Vasa, 201136
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (using Global Variables)
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201137
Demo 1 - Life Cycle of an Android
App.
•Walk-through of code provided along with
lecture handout.
•We can see the states by adding a little bit
of logging code to a few call-backs
R. Vasa, 201138
Life-Cycle Demo
onCreate, onStart,
onResume etc. are from the
Activity class
R. Vasa, 201139
Life-Cycle Demo (Watching
State)
R. Vasa, 201140
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (Global Variables)
•Application Manifest File
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201141
Demo 2 - Passing Data
R. Vasa, 201142
Before data passing -- a quick
recap
•This app. makes use of nested layouts
•We can also make it look a bit nicer using
weights
R. Vasa, 201143
Anatomy of the App. (Nested
Layout)
Linear Layout
TextView
ImageView
Linear Layout
Button (Fruit)
Button (Vegetable)
Button (Drink)
R. Vasa, 201144
A Weighty Problem
Spot the difference in layout
How achieved? android:layout_weight=”1”
for all buttons in the layout
R. Vasa, 201145
Layout Weights are Handy
If all buttons are given the
same weight, then they will
be of same size
R. Vasa, 201146
Demo 2 - Passing Data
Activity - FoodMain Activity - FoodView
Data Passed:
Name (“Fruit”)
Image (fruit.png)
R. Vasa, 201147
Passing Data with Globals
•All Activities have a parent Application
object
•We can store data in this Application object
Activity-AActivity-A
Activity-CActivity-C
Activity-BActivity-B
ApplicatiApplicati
onon Activities have
a parent
application
We need to
extend the
Application class
to do this
R. Vasa, 201148
What Creates/Manages
Application?
•Application is created and managed by the
Android runtime
•There is one Application object created by
default
•We can extend the “Application Class” and
make our own
•But, we need to tell the Runtime about this
Application object via the Manifest XML
file
R. Vasa, 201149
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (Global Variables)
•Application Manifest File
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201150
Manifest contains Application
Metadata
• Android runtime creates the Application object
• Application metadata is provided in the Manifest
XML
Manifest XML file is
part of the project
Auto-generated by Eclipse IDE
R. Vasa, 201151
Manifest XML - What is it?
Manifest informs Runtime about the App.Manifest informs Runtime about the App.
R. Vasa, 201152
Manifest XML - Contents
Application Name
R. Vasa, 201153
Manifest XML - Contains
Activity Names
Activity Name(s)
R. Vasa, 201154
Manifest XML - Refers to Icons
Launcher Icon
R. Vasa, 201155
Manifest XML - Refers to the
App. Name
Application
Label
R. Vasa, 201156
Passing Data with Globals
•All Activities have a parent Application
object
•We can store data in this Application object
FoodApplicatiFoodApplicati
onon
ApplicatiApplicati
onon
We need to
extend the
Application class
to do this
extends
R. Vasa, 201157
Global Vars. can be in the
Application
FoodApplicatiFoodApplicati
onon
ApplicatiApplicati
onon
extends
R. Vasa, 201158
Activities and Globals in
Application
•Activities can access data from the
Application object
We can also get to these variables from any Activi
(declared in the Manifest XML file)
We can also get to these variables from any Activit
(declared in the Manifest XML file)
R. Vasa, 201159
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (Global Variables)
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201160
Demo 2 - Passing Data using
Intents
Activity - FoodMain Activity - FoodView
Data Passed:
Name (“Fruit”)
Image (fruit.png)
R. Vasa, 201161
Wiring up the Buttons (Another
Way)
Buttons
support onClick
in the layout
XML
Buttons
support onClick
in the layout
XML
R. Vasa, 201162
Storing Data in a Bundle
R. Vasa, 201163
Sending an Async. Message
Android uses an asynchronous messaging
model (known as Intents) to send messages
between Activities
Android uses an asynchronous messaging
model (known as Intents) to send messages
between Activities
R. Vasa, 201164
Sending an Async. Message
Setup Message and Store
Data in the Message
Setup Message and Store
Data in the Message
R. Vasa, 201165
Sending an Async. Message
Class that is sending
the Intent (message)
Class that is sending
the Intent (message)
R. Vasa, 201166
Sending an Async. Message
Class that will receive
the Intent (message)
Class that will receive
the Intent (message)
Class that is sending
the Intent (message)
Class that is sending
the Intent (message)
R. Vasa, 201167
Sending an Async. Message
Send the Message to the Activity
(Transmit)
Send the Message to the Activity
(Transmit)
R. Vasa, 201168
Message Receiving
Retrieve data from the
message
Retrieve data from the
message
R. Vasa, 201169
Intent Messages are
Asynchronous
•The intent system is completely
asynchronous -- similar to e-mail
•That is,
•The receiver will get the message only if
they request to see intents via getIntent()
method
•All transmitted messages are placed on a
‘Service Queue’
R. Vasa, 201170
Complex Domain Models
•Where do you hold a complex domain
model?(E.g. we have 4-5 classes in a
domain model)
•We can hold a reference to the domain
model objects in the Application
•This is fine if there are only a few objects
•Unlike Activity, Application is only terminated
if device runs low on memory
•If the data size is larger -- then best to use
the sqlite database
R. Vasa, 201171
Lecture Overview
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (Global Variables)
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201172
Controlling Input Data Type
•A common task on forms is to restrict users
to certain data types
•Email Address
•Decimal Numbers
•Positive Integers
•Alpha Numeric
•On mobile devices -- development
platforms offer a simple way to control the
keyboard type
R. Vasa, 201173
Controlling Input Type
(Android)
•Android has a large number of options
•You can merge them to create more
complex input types
textUri
textEmailAddress
textPassword
textPersonName
number
numberSigned
numberDecimal
numberPassword
textUri
textEmailAddress
textPassword
textPersonName
number
numberSigned
numberDecimal
numberPassword
android:inputTypeandroid:inputType
R. Vasa, 201174
Input Type - Example
http://developer.android.com/reference/android/widget/TextView.html#attr_andro
id:inputType
More info. at the following URL
R. Vasa, 201175
Lecture Recap
•Recap (previous 2 weeks)
•Passing Data between Activities
•Data passing methods
•Activity Design Choice
•Activity Life Cycle
•Passing Data Demo (Global Variables)
•Passing Data Demo (using Intents)
•Controlling Input Type
R. Vasa, 201176
What’s next?
•Usability Principles - Mobile Form Design
•Using Dialogs
•Returning data back from an Activity
•Simple File I/O
•More complex layouts
•Exploring a few more widgets

More Related Content

What's hot

Python Pandas
Python PandasPython Pandas
Python Pandas
Sunil OS
 
Introduction to data structures and Algorithm
Introduction to data structures and AlgorithmIntroduction to data structures and Algorithm
Introduction to data structures and Algorithm
Dhaval Kaneria
 
Chapter 5 Syntax Directed Translation
Chapter 5   Syntax Directed TranslationChapter 5   Syntax Directed Translation
Chapter 5 Syntax Directed Translation
Radhakrishnan Chinnusamy
 
Web Servers (ppt)
Web Servers (ppt)Web Servers (ppt)
Web Servers (ppt)
webhostingguy
 
Python: Modules and Packages
Python: Modules and PackagesPython: Modules and Packages
Python: Modules and Packages
Damian T. Gordon
 
Client side scripting using Javascript
Client side scripting using JavascriptClient side scripting using Javascript
Client side scripting using Javascript
Bansari Shah
 
Data mining
Data miningData mining
Data mining
Maulik Togadiya
 
Object oriented modeling and design
Object oriented modeling and designObject oriented modeling and design
Object oriented modeling and design
ATS SBGI MIRAJ
 
Semantic web technology
Semantic web technologySemantic web technology
Semantic web technology
Stanley Wang
 
Unit 1 introduction to web programming
Unit 1 introduction to web programmingUnit 1 introduction to web programming
Unit 1 introduction to web programming
zahid7578
 
Data warehousing
Data warehousingData warehousing
Data warehousing
Shruti Dalela
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and Design
Joel Briza
 
Lecture-3: Introduction to html - Basic Structure & Block Building
Lecture-3: Introduction to html - Basic Structure & Block BuildingLecture-3: Introduction to html - Basic Structure & Block Building
Lecture-3: Introduction to html - Basic Structure & Block Building
Mubashir Ali
 
Data mining query language
Data mining query languageData mining query language
Data mining query language
GowriLatha1
 
Compiler Design Unit 1
Compiler Design Unit 1Compiler Design Unit 1
Compiler Design Unit 1
Jena Catherine Bel D
 
Lecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeLecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading scheme
Mubashir Ali
 
Data controls ppt
Data controls pptData controls ppt
Data controls ppt
Iblesoft
 
Web technologies: HTTP
Web technologies: HTTPWeb technologies: HTTP
Web technologies: HTTP
Piero Fraternali
 
Introduction to php
Introduction to phpIntroduction to php
Introduction to php
Taha Malampatti
 
jstl ( jsp standard tag library )
jstl ( jsp standard tag library )jstl ( jsp standard tag library )
jstl ( jsp standard tag library )
Adarsh Patel
 

What's hot (20)

Python Pandas
Python PandasPython Pandas
Python Pandas
 
Introduction to data structures and Algorithm
Introduction to data structures and AlgorithmIntroduction to data structures and Algorithm
Introduction to data structures and Algorithm
 
Chapter 5 Syntax Directed Translation
Chapter 5   Syntax Directed TranslationChapter 5   Syntax Directed Translation
Chapter 5 Syntax Directed Translation
 
Web Servers (ppt)
Web Servers (ppt)Web Servers (ppt)
Web Servers (ppt)
 
Python: Modules and Packages
Python: Modules and PackagesPython: Modules and Packages
Python: Modules and Packages
 
Client side scripting using Javascript
Client side scripting using JavascriptClient side scripting using Javascript
Client side scripting using Javascript
 
Data mining
Data miningData mining
Data mining
 
Object oriented modeling and design
Object oriented modeling and designObject oriented modeling and design
Object oriented modeling and design
 
Semantic web technology
Semantic web technologySemantic web technology
Semantic web technology
 
Unit 1 introduction to web programming
Unit 1 introduction to web programmingUnit 1 introduction to web programming
Unit 1 introduction to web programming
 
Data warehousing
Data warehousingData warehousing
Data warehousing
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and Design
 
Lecture-3: Introduction to html - Basic Structure & Block Building
Lecture-3: Introduction to html - Basic Structure & Block BuildingLecture-3: Introduction to html - Basic Structure & Block Building
Lecture-3: Introduction to html - Basic Structure & Block Building
 
Data mining query language
Data mining query languageData mining query language
Data mining query language
 
Compiler Design Unit 1
Compiler Design Unit 1Compiler Design Unit 1
Compiler Design Unit 1
 
Lecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeLecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading scheme
 
Data controls ppt
Data controls pptData controls ppt
Data controls ppt
 
Web technologies: HTTP
Web technologies: HTTPWeb technologies: HTTP
Web technologies: HTTP
 
Introduction to php
Introduction to phpIntroduction to php
Introduction to php
 
jstl ( jsp standard tag library )
jstl ( jsp standard tag library )jstl ( jsp standard tag library )
jstl ( jsp standard tag library )
 

Viewers also liked

HIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and DevicesHIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and Devices
Yhal Htet Aung
 
Presentazione progettoglobale
Presentazione progettoglobalePresentazione progettoglobale
Presentazione progettoglobale
Aldo Salvatore Coraggio
 
Ambiente manuale orto_sinergico_rilegato
Ambiente manuale orto_sinergico_rilegatoAmbiente manuale orto_sinergico_rilegato
Ambiente manuale orto_sinergico_rilegatoAldo Salvatore Coraggio
 
Postmodernizm prezentacja
Postmodernizm prezentacjaPostmodernizm prezentacja
Postmodernizm prezentacjaiwa22
 
Momentum
MomentumMomentum
EduBrand Alumni Loyalty Program
EduBrand Alumni Loyalty ProgramEduBrand Alumni Loyalty Program
EduBrand Alumni Loyalty Program
Alex Fabristov
 
HIT3328 - Chapter03 - Simple Interactive Apps
HIT3328 - Chapter03 - Simple Interactive AppsHIT3328 - Chapter03 - Simple Interactive Apps
HIT3328 - Chapter03 - Simple Interactive Apps
Yhal Htet Aung
 
江南風雲錄與二泉映月
江南風雲錄與二泉映月江南風雲錄與二泉映月
江南風雲錄與二泉映月James Lee
 

Viewers also liked (10)

HIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and DevicesHIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and Devices
 
Presentazione progettoglobale
Presentazione progettoglobalePresentazione progettoglobale
Presentazione progettoglobale
 
Ambiente manuale orto_sinergico_rilegato
Ambiente manuale orto_sinergico_rilegatoAmbiente manuale orto_sinergico_rilegato
Ambiente manuale orto_sinergico_rilegato
 
Postmodernizm prezentacja
Postmodernizm prezentacjaPostmodernizm prezentacja
Postmodernizm prezentacja
 
Manifesto ecovillaggiosubbiano
Manifesto ecovillaggiosubbianoManifesto ecovillaggiosubbiano
Manifesto ecovillaggiosubbiano
 
Momentum
MomentumMomentum
Momentum
 
Per unmondonuovo
Per unmondonuovoPer unmondonuovo
Per unmondonuovo
 
EduBrand Alumni Loyalty Program
EduBrand Alumni Loyalty ProgramEduBrand Alumni Loyalty Program
EduBrand Alumni Loyalty Program
 
HIT3328 - Chapter03 - Simple Interactive Apps
HIT3328 - Chapter03 - Simple Interactive AppsHIT3328 - Chapter03 - Simple Interactive Apps
HIT3328 - Chapter03 - Simple Interactive Apps
 
江南風雲錄與二泉映月
江南風雲錄與二泉映月江南風雲錄與二泉映月
江南風雲錄與二泉映月
 

Similar to HIT3328 - Chapter04 - Complex Interactions

Android Architecture Components
Android Architecture ComponentsAndroid Architecture Components
Android Architecture Components
Darshan Parikh
 
OLAP in Data Warehouse
OLAP in Data WarehouseOLAP in Data Warehouse
OLAP in Data Warehouse
SOMASUNDARAM T
 
Belfast JUG 23-10-2013
Belfast JUG 23-10-2013Belfast JUG 23-10-2013
Belfast JUG 23-10-2013
eamonnlong
 
Reactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaReactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJava
Ali Muzaffar
 
Cesar Valiente "Unidirectional architecture on Android with Kotlin"
Cesar Valiente "Unidirectional architecture on Android with Kotlin"Cesar Valiente "Unidirectional architecture on Android with Kotlin"
Cesar Valiente "Unidirectional architecture on Android with Kotlin"
IT Event
 
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay PlatonovSenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
Sencha
 
Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture styles
Araf Karsh Hamid
 
HIT3328 - Chapter0602 - Sketching Apps
HIT3328 - Chapter0602 - Sketching AppsHIT3328 - Chapter0602 - Sketching Apps
HIT3328 - Chapter0602 - Sketching Apps
Yhal Htet Aung
 
OpenML Tutorial ECMLPKDD 2015
OpenML Tutorial ECMLPKDD 2015OpenML Tutorial ECMLPKDD 2015
OpenML Tutorial ECMLPKDD 2015
Joaquin Vanschoren
 
HIT3328 - Chapter0701 - Dialogs, Tabs and Lists
HIT3328 - Chapter0701 - Dialogs, Tabs and ListsHIT3328 - Chapter0701 - Dialogs, Tabs and Lists
HIT3328 - Chapter0701 - Dialogs, Tabs and Lists
Yhal Htet Aung
 
Finding sensor related energy black holes in smartphone applications
Finding sensor related energy black holes in smartphone applicationsFinding sensor related energy black holes in smartphone applications
Finding sensor related energy black holes in smartphone applications
School of Engineering, HKUST
 
ML-Based Data-Driven Software Development with InfluxDB 2.0
ML-Based Data-Driven Software Development with InfluxDB 2.0ML-Based Data-Driven Software Development with InfluxDB 2.0
ML-Based Data-Driven Software Development with InfluxDB 2.0
InfluxData
 
DataHub
DataHubDataHub
Runtime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsRuntime Behavior of JavaScript Programs
Runtime Behavior of JavaScript Programs
IRJET Journal
 
React, Flux, and Realtime RSVPs
React, Flux, and Realtime RSVPsReact, Flux, and Realtime RSVPs
React, Flux, and Realtime RSVPs
Alex Klibisz
 
Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014
Sandro Mancuso
 
Functional reactive programming
Functional reactive programmingFunctional reactive programming
Functional reactive programming
Araf Karsh Hamid
 
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
MugiiiReee
 
Building an Activity Feed with Cassandra
Building an Activity Feed with CassandraBuilding an Activity Feed with Cassandra
Building an Activity Feed with Cassandra
Mark Dunphy
 
Qualcomm Institute Winter IoT Program - Final Presentation
Qualcomm Institute Winter IoT Program - Final PresentationQualcomm Institute Winter IoT Program - Final Presentation
Qualcomm Institute Winter IoT Program - Final Presentation
MookeunJi
 

Similar to HIT3328 - Chapter04 - Complex Interactions (20)

Android Architecture Components
Android Architecture ComponentsAndroid Architecture Components
Android Architecture Components
 
OLAP in Data Warehouse
OLAP in Data WarehouseOLAP in Data Warehouse
OLAP in Data Warehouse
 
Belfast JUG 23-10-2013
Belfast JUG 23-10-2013Belfast JUG 23-10-2013
Belfast JUG 23-10-2013
 
Reactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJavaReactive Programming on Android - RxAndroid - RxJava
Reactive Programming on Android - RxAndroid - RxJava
 
Cesar Valiente "Unidirectional architecture on Android with Kotlin"
Cesar Valiente "Unidirectional architecture on Android with Kotlin"Cesar Valiente "Unidirectional architecture on Android with Kotlin"
Cesar Valiente "Unidirectional architecture on Android with Kotlin"
 
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay PlatonovSenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
 
Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture styles
 
HIT3328 - Chapter0602 - Sketching Apps
HIT3328 - Chapter0602 - Sketching AppsHIT3328 - Chapter0602 - Sketching Apps
HIT3328 - Chapter0602 - Sketching Apps
 
OpenML Tutorial ECMLPKDD 2015
OpenML Tutorial ECMLPKDD 2015OpenML Tutorial ECMLPKDD 2015
OpenML Tutorial ECMLPKDD 2015
 
HIT3328 - Chapter0701 - Dialogs, Tabs and Lists
HIT3328 - Chapter0701 - Dialogs, Tabs and ListsHIT3328 - Chapter0701 - Dialogs, Tabs and Lists
HIT3328 - Chapter0701 - Dialogs, Tabs and Lists
 
Finding sensor related energy black holes in smartphone applications
Finding sensor related energy black holes in smartphone applicationsFinding sensor related energy black holes in smartphone applications
Finding sensor related energy black holes in smartphone applications
 
ML-Based Data-Driven Software Development with InfluxDB 2.0
ML-Based Data-Driven Software Development with InfluxDB 2.0ML-Based Data-Driven Software Development with InfluxDB 2.0
ML-Based Data-Driven Software Development with InfluxDB 2.0
 
DataHub
DataHubDataHub
DataHub
 
Runtime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsRuntime Behavior of JavaScript Programs
Runtime Behavior of JavaScript Programs
 
React, Flux, and Realtime RSVPs
React, Flux, and Realtime RSVPsReact, Flux, and Realtime RSVPs
React, Flux, and Realtime RSVPs
 
Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014
 
Functional reactive programming
Functional reactive programmingFunctional reactive programming
Functional reactive programming
 
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
 
Building an Activity Feed with Cassandra
Building an Activity Feed with CassandraBuilding an Activity Feed with Cassandra
Building an Activity Feed with Cassandra
 
Qualcomm Institute Winter IoT Program - Final Presentation
Qualcomm Institute Winter IoT Program - Final PresentationQualcomm Institute Winter IoT Program - Final Presentation
Qualcomm Institute Winter IoT Program - Final Presentation
 

More from Yhal Htet Aung

HIT3328 - Chapter0601 - Menus and Lists
HIT3328 - Chapter0601 - Menus and ListsHIT3328 - Chapter0601 - Menus and Lists
HIT3328 - Chapter0601 - Menus and Lists
Yhal Htet Aung
 
HIT3328 - Chapter0702 - Navigation Flow and Design Approach
HIT3328 - Chapter0702 - Navigation Flow and Design ApproachHIT3328 - Chapter0702 - Navigation Flow and Design Approach
HIT3328 - Chapter0702 - Navigation Flow and Design Approach
Yhal Htet Aung
 
HIT3328 - Chapter05 - Working with Forms
HIT3328 - Chapter05 - Working with FormsHIT3328 - Chapter05 - Working with Forms
HIT3328 - Chapter05 - Working with Forms
Yhal Htet Aung
 
HIT3328 - Chapter02 - Foundation and Tools
HIT3328 - Chapter02 - Foundation and ToolsHIT3328 - Chapter02 - Foundation and Tools
HIT3328 - Chapter02 - Foundation and Tools
Yhal Htet Aung
 
CSC1100 - Chapter11 - Programming Languages and Program Development
CSC1100 - Chapter11 - Programming Languages and Program DevelopmentCSC1100 - Chapter11 - Programming Languages and Program Development
CSC1100 - Chapter11 - Programming Languages and Program Development
Yhal Htet Aung
 
CSC1100 - Chapter10 - Information System
CSC1100 - Chapter10 - Information SystemCSC1100 - Chapter10 - Information System
CSC1100 - Chapter10 - Information System
Yhal Htet Aung
 
CSC1100 - Chapter09 - Computer Security, Ethics and Privacy
CSC1100 - Chapter09 - Computer Security, Ethics and PrivacyCSC1100 - Chapter09 - Computer Security, Ethics and Privacy
CSC1100 - Chapter09 - Computer Security, Ethics and Privacy
Yhal Htet Aung
 
CSC1100 - Chapter08 - Database Management
CSC1100 - Chapter08 - Database ManagementCSC1100 - Chapter08 - Database Management
CSC1100 - Chapter08 - Database Management
Yhal Htet Aung
 
CSC1100 - Chapter07 - Communications & Networks
CSC1100 - Chapter07 - Communications & NetworksCSC1100 - Chapter07 - Communications & Networks
CSC1100 - Chapter07 - Communications & Networks
Yhal Htet Aung
 
CSC1100 - Chapter06 - Operating System & Utility Programs
CSC1100 - Chapter06 - Operating System & Utility ProgramsCSC1100 - Chapter06 - Operating System & Utility Programs
CSC1100 - Chapter06 - Operating System & Utility Programs
Yhal Htet Aung
 
CSC1100 - Chapter05 - Storage
CSC1100 - Chapter05 - StorageCSC1100 - Chapter05 - Storage
CSC1100 - Chapter05 - Storage
Yhal Htet Aung
 
CSC1100 - Chapter04 - Output
CSC1100 - Chapter04 - OutputCSC1100 - Chapter04 - Output
CSC1100 - Chapter04 - Output
Yhal Htet Aung
 
CSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - InputCSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - Input
Yhal Htet Aung
 
CSC1100 - Chapter02 - Components of the System Unit
CSC1100 - Chapter02 - Components of the System UnitCSC1100 - Chapter02 - Components of the System Unit
CSC1100 - Chapter02 - Components of the System Unit
Yhal Htet Aung
 
CSC1100 - Chapter01 - Overview of Using Computers
CSC1100 - Chapter01 - Overview of Using ComputersCSC1100 - Chapter01 - Overview of Using Computers
CSC1100 - Chapter01 - Overview of Using Computers
Yhal Htet Aung
 
CSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow ChartsCSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow Charts
Yhal Htet Aung
 

More from Yhal Htet Aung (16)

HIT3328 - Chapter0601 - Menus and Lists
HIT3328 - Chapter0601 - Menus and ListsHIT3328 - Chapter0601 - Menus and Lists
HIT3328 - Chapter0601 - Menus and Lists
 
HIT3328 - Chapter0702 - Navigation Flow and Design Approach
HIT3328 - Chapter0702 - Navigation Flow and Design ApproachHIT3328 - Chapter0702 - Navigation Flow and Design Approach
HIT3328 - Chapter0702 - Navigation Flow and Design Approach
 
HIT3328 - Chapter05 - Working with Forms
HIT3328 - Chapter05 - Working with FormsHIT3328 - Chapter05 - Working with Forms
HIT3328 - Chapter05 - Working with Forms
 
HIT3328 - Chapter02 - Foundation and Tools
HIT3328 - Chapter02 - Foundation and ToolsHIT3328 - Chapter02 - Foundation and Tools
HIT3328 - Chapter02 - Foundation and Tools
 
CSC1100 - Chapter11 - Programming Languages and Program Development
CSC1100 - Chapter11 - Programming Languages and Program DevelopmentCSC1100 - Chapter11 - Programming Languages and Program Development
CSC1100 - Chapter11 - Programming Languages and Program Development
 
CSC1100 - Chapter10 - Information System
CSC1100 - Chapter10 - Information SystemCSC1100 - Chapter10 - Information System
CSC1100 - Chapter10 - Information System
 
CSC1100 - Chapter09 - Computer Security, Ethics and Privacy
CSC1100 - Chapter09 - Computer Security, Ethics and PrivacyCSC1100 - Chapter09 - Computer Security, Ethics and Privacy
CSC1100 - Chapter09 - Computer Security, Ethics and Privacy
 
CSC1100 - Chapter08 - Database Management
CSC1100 - Chapter08 - Database ManagementCSC1100 - Chapter08 - Database Management
CSC1100 - Chapter08 - Database Management
 
CSC1100 - Chapter07 - Communications & Networks
CSC1100 - Chapter07 - Communications & NetworksCSC1100 - Chapter07 - Communications & Networks
CSC1100 - Chapter07 - Communications & Networks
 
CSC1100 - Chapter06 - Operating System & Utility Programs
CSC1100 - Chapter06 - Operating System & Utility ProgramsCSC1100 - Chapter06 - Operating System & Utility Programs
CSC1100 - Chapter06 - Operating System & Utility Programs
 
CSC1100 - Chapter05 - Storage
CSC1100 - Chapter05 - StorageCSC1100 - Chapter05 - Storage
CSC1100 - Chapter05 - Storage
 
CSC1100 - Chapter04 - Output
CSC1100 - Chapter04 - OutputCSC1100 - Chapter04 - Output
CSC1100 - Chapter04 - Output
 
CSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - InputCSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - Input
 
CSC1100 - Chapter02 - Components of the System Unit
CSC1100 - Chapter02 - Components of the System UnitCSC1100 - Chapter02 - Components of the System Unit
CSC1100 - Chapter02 - Components of the System Unit
 
CSC1100 - Chapter01 - Overview of Using Computers
CSC1100 - Chapter01 - Overview of Using ComputersCSC1100 - Chapter01 - Overview of Using Computers
CSC1100 - Chapter01 - Overview of Using Computers
 
CSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow ChartsCSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow Charts
 

Recently uploaded

International Upcycling Research Network advisory board meeting 4
International Upcycling Research Network advisory board meeting 4International Upcycling Research Network advisory board meeting 4
International Upcycling Research Network advisory board meeting 4
Kyungeun Sung
 
Getting Data Ready for Culture Hack by Neontribe
Getting Data Ready for Culture Hack by NeontribeGetting Data Ready for Culture Hack by Neontribe
Getting Data Ready for Culture Hack by Neontribe
Harry Harrold
 
Plastic Molding Infographic - RPWORLD.pdf
Plastic Molding Infographic - RPWORLD.pdfPlastic Molding Infographic - RPWORLD.pdf
Plastic Molding Infographic - RPWORLD.pdf
RPWORLD Manufacturing
 
一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样
一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样
一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样
3vgr39kx
 
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
7jpwahiy
 
一比一原版英国伦敦大学毕业证(London学位证)如何办理
一比一原版英国伦敦大学毕业证(London学位证)如何办理一比一原版英国伦敦大学毕业证(London学位证)如何办理
一比一原版英国伦敦大学毕业证(London学位证)如何办理
k4krdgxx
 
一比一原版(UC毕业证书)堪培拉大学毕业证如何办理
一比一原版(UC毕业证书)堪培拉大学毕业证如何办理一比一原版(UC毕业证书)堪培拉大学毕业证如何办理
一比一原版(UC毕业证书)堪培拉大学毕业证如何办理
wkip62b
 
一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理
一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理
一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理
p74xokfq
 
一比一原版马里兰大学毕业证(UMD毕业证书)如何办理
一比一原版马里兰大学毕业证(UMD毕业证书)如何办理一比一原版马里兰大学毕业证(UMD毕业证书)如何办理
一比一原版马里兰大学毕业证(UMD毕业证书)如何办理
9lq7ultg
 
一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理
一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理
一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理
bz42w9z0
 
欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】
欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】
欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】
batchelorerbm45967
 
一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理
一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理
一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理
yeytf
 
一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理
一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理
一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理
lyurzi7r
 
一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样
一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样
一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样
881evgn0
 
原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样
原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样
原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样
hw2xf1m
 
一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理
一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理
一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理
k4krdgxx
 
欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】
欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】
欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】
jafiradnan336
 
一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理
一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理
一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理
mfria419
 
一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理
一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理
一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理
kmzsy4kn
 
一比一原版马来西亚世纪大学毕业证成绩单一模一样
一比一原版马来西亚世纪大学毕业证成绩单一模一样一比一原版马来西亚世纪大学毕业证成绩单一模一样
一比一原版马来西亚世纪大学毕业证成绩单一模一样
k4krdgxx
 

Recently uploaded (20)

International Upcycling Research Network advisory board meeting 4
International Upcycling Research Network advisory board meeting 4International Upcycling Research Network advisory board meeting 4
International Upcycling Research Network advisory board meeting 4
 
Getting Data Ready for Culture Hack by Neontribe
Getting Data Ready for Culture Hack by NeontribeGetting Data Ready for Culture Hack by Neontribe
Getting Data Ready for Culture Hack by Neontribe
 
Plastic Molding Infographic - RPWORLD.pdf
Plastic Molding Infographic - RPWORLD.pdfPlastic Molding Infographic - RPWORLD.pdf
Plastic Molding Infographic - RPWORLD.pdf
 
一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样
一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样
一比一原版南安普顿索伦特大学毕业证Southampton成绩单一模一样
 
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
 
一比一原版英国伦敦大学毕业证(London学位证)如何办理
一比一原版英国伦敦大学毕业证(London学位证)如何办理一比一原版英国伦敦大学毕业证(London学位证)如何办理
一比一原版英国伦敦大学毕业证(London学位证)如何办理
 
一比一原版(UC毕业证书)堪培拉大学毕业证如何办理
一比一原版(UC毕业证书)堪培拉大学毕业证如何办理一比一原版(UC毕业证书)堪培拉大学毕业证如何办理
一比一原版(UC毕业证书)堪培拉大学毕业证如何办理
 
一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理
一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理
一比一原版(USQ毕业证书)南昆士兰大学毕业证如何办理
 
一比一原版马里兰大学毕业证(UMD毕业证书)如何办理
一比一原版马里兰大学毕业证(UMD毕业证书)如何办理一比一原版马里兰大学毕业证(UMD毕业证书)如何办理
一比一原版马里兰大学毕业证(UMD毕业证书)如何办理
 
一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理
一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理
一比一原版澳洲科廷科技大学毕业证(Curtin毕业证)如何办理
 
欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】
欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】
欧洲杯足彩-欧洲杯足彩买球软件-欧洲杯足彩买球软件下载|【​网址​🎉ac123.net🎉​】
 
一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理
一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理
一比一原版(UVM毕业证)佛蒙特大学毕业证如何办理
 
一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理
一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理
一比一原版美国俄勒冈大学毕业证(UO,UofO学位证)如何办理
 
一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样
一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样
一比一原版美国哥伦比亚大学毕业证Columbia成绩单一模一样
 
原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样
原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样
原版制作(MDIS毕业证书)新加坡管理发展学院毕业证学位证一模一样
 
一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理
一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理
一比一原版(Deakin毕业证书)澳洲迪肯大学毕业证文凭如何办理
 
欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】
欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】
欧洲杯买球-欧洲杯买球买球网好的网站-欧洲杯买球哪里有正规的买球网站|【​网址​🎉ac123.net🎉​】
 
一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理
一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理
一比一原版(Teesside毕业证)英国提赛德大学毕业证如何办理
 
一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理
一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理
一比一原版(KPU毕业证)加拿大昆特兰理工大学毕业证如何办理
 
一比一原版马来西亚世纪大学毕业证成绩单一模一样
一比一原版马来西亚世纪大学毕业证成绩单一模一样一比一原版马来西亚世纪大学毕业证成绩单一模一样
一比一原版马来西亚世纪大学毕业证成绩单一模一样
 

HIT3328 - Chapter04 - Complex Interactions

  • 1. HIT3328 / HIT8328 Software Development for Mobile Devices Dr. Rajesh Vasa, 2011 Twitter: @rvasa Blog: http://rvasa.blogspot.com 1 Lecture 04 Complex Interactions
  • 2. R. Vasa, 20112 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (using Global Variables) •Application Manifest File •Passing Data Demo (using Intents) •Controlling Input Type
  • 3. R. Vasa, 20113 Android Device User Interaction Menu HomeBack
  • 4. R. Vasa, 20114 Android App. is made of Activities Activity View Group Views (Layout)
  • 5. R. Vasa, 20115 User Interface (generally) Built in XMLActivity View Group (Layout) Activity Class (Java) Layout Definition (main.xml) PresentatioPresentatio nn FunctionaliFunctionali tyty
  • 6. R. Vasa, 20116 The Android Way - Convention not Config. •Source code (src) •Generated code (gen) •Resources (res) •Images (@drawable) •Layout of app (layout) •Constants/Strings (@strings) Conventions to Follow
  • 7. R. Vasa, 20117 Portrait and Landscape Layouts Conventions to Follow
  • 8. R. Vasa, 20118 Provide Resources @Multiple Resolutions High Low Medium Conventions to Follow
  • 9. R. Vasa, 20119 View Identifiers @+id TAG creates new identifiers Conventions to Follow
  • 10. R. Vasa, 201110 UI Interaction Handling Pattern •Component.setOn......Listener ( handler ) •E.g. button.setOnClickListener •Handler is an anonymous inner class •On...Listener handler = new On....Listener() {}
  • 11. R. Vasa, 201111 Android Activity Life Cycle onCreate is called when Activity Starts Activity is re-started when orientatio n changes
  • 12. R. Vasa, 201112 We Retrieve State On Creation State retrieval done here onSaveInstanceState( ) is called from this state (Save Saved here)
  • 13. R. Vasa, 201113 Bundle stores simple state information BundleBundle putString(key, value) putDouble(key, value) putInt(key, value) putStringArray(k ey, value[]) It is a Key, Value store system (like a Hash Table or a Hash Map) Code Snippet: state.putString("inputTemperature", inputTemp); Code Snippet: state.putString("inputTemperature", inputTemp);
  • 14. R. Vasa, 201114 Working with Resources off.png Layout XML File Via Java Code on.png
  • 15. R. Vasa, 201115 Short Problem 1 - Passing Data •Context: In Android -- Apps are made of Activities. So, each Screen is a “new” Activity • We want to pass data between Activities. • But, Activity construction is managed by the Dalvik runtime. That is, cannot pass data into constructor. •What would you prefer to do? • Store shared data in global variables available to ALL Activities. • Move all data to a separate data layer. • Send primitive data bundles between
  • 16. R. Vasa, 201116 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (using Global Variables) •Passing Data Demo (using Intents) •Controlling Input Type
  • 17. R. Vasa, 201117 Wiring up Activities -- Typical Use Case Select Back Contact List Activity Contact Details
  • 18. R. Vasa, 201118 Wiring up Activities -- Typical Use Case Select Contact List Activity Contact Details We re-use this activity with different data Select
  • 19. R. Vasa, 201119 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing options •Activity Design Choice •Activity Life Cycle •Passing Data Demo (using Global Variables) •Passing Data Demo (using Intents)
  • 20. R. Vasa, 201120 Data Passing Option - Global Variables •We can use Global Variables ... but, •Widely accepted as a “risky” choice •A few global variables are used in many large systems (e.g. Linux Kernel Source Code) •Risk manageable in ‘small’ programs •Good thread @ StackOverflow http://goo.gl/EouH3 •Constant values as globals is ok (e.g. R.java) •Key Issue (to manage): How many objects
  • 21. R. Vasa, 201121 Data Passing Option - Data Layer •We can store all data in a DBMS and access it via a “data layer” •Good idea when dealing with large / complex blocks of data •Overkill if we only need to store a few values •The data store can be “in-memory”, “on-disk”, and/or “on remote server”
  • 22. R. Vasa, 201122 Data Passing Option - Bundles •We can put data into a bundle and pass this across using a “messaging framework” •Simple (once you understand the messaging framework architecture) •Persistence is not managed (like DBMS)
  • 23. R. Vasa, 201123 Data Passing Option - iOS Only!! •You can pass data directly to methods in another screen (UIViewController) •UIViewController is approx. similar to Activity •This option is not possible in Android -- this was a “design intent” (design side-effect?)
  • 24. R. Vasa, 201124 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (using Global Variables) •Passing Data Demo (using Intents) •Controlling Input Type
  • 25. R. Vasa, 201125 iOS Apps. are directly managed by O/S UIAppDelegateUIAppDelegate UIViewController-UIViewController- AA UIViewController-UIViewController- BB UIViewController-UIViewController- CC UIAppDelegate has Life CycleView Controllers are managed by the App internally Image Source: Apple Inc. Life Cycle => Managed by Operating System
  • 26. R. Vasa, 201126 Android Activities are Managed by O/S Activity-AActivity-A Activity-CActivity-C Activity-BActivity-B ApplicatiApplicati onon Activities have a parent application Activity has Life CycleApplication is NOT managed directly by the O/SLife Cycle => Managed by Operating System
  • 27. R. Vasa, 201127 A Key Design Different (iOS Vs Android) Activity-AActivity-A Activity-CActivity-C Activity-BActivity-B UIAppDelegateUIAppDelegate UIViewController-UIViewController- AA UIViewController-UIViewController- BB UIViewController-UIViewController- CC ApplicatiApplicati onon UIAppDelegate has Life Cycle Activities have a parent application Activity has Life CycleApplication is NOT managed directly by the O/SLife Cycle => Managed by Operating System View Controllers are managed by the App internally
  • 28. R. Vasa, 201128 Activity Life Cycle Design Choice.... •Android developers decided to give Activity a life cycle (rather than the application) •This makes each Activity similar to a separate program •Hence, data passing is restricted to: •Global Variables (stored in Application object) •Data bundles passed via async. messages •Data stored externally in files or DBMS
  • 29. R. Vasa, 201129 Short Problem 2 - Activity Design Choice •Unlike iOS ViewControllers, Activities have been modelled to be (almost) like independent programs •What is the likely rationale for such a choice? •What would be the benefits?
  • 30. R. Vasa, 201130 Only One Activity is Active/Running •Only one Activity can be in the ‘foreground’ •When Activity-A calls Activity-B •Activity-B will be visible to the user (foreground) •Activity-A is paused (background)
  • 31. R. Vasa, 201131 Activities are Stacked in Android •All created activities are placed on a Stack •Activities ‘popped’ when ‘Back Button’ is pressed Activity-AActivity-A Foreground/Acti ve If only one activity is on the Activity Stack then “back” button exits it
  • 32. R. Vasa, 201132 Activities are Stacked in Android •All current activities are placed on a Stack •Newly started activities come into foreground Activity-AActivity-A Activity-BActivity-B Foreground/Acti ve starts Background/ Paused Back button will pop top most activity from stack
  • 33. R. Vasa, 201133 Activities are Stacked in Android •As additional activities are started, older activities go into background •All activities are placed on Activity Stack Activity-AActivity-A Activity-BActivity-B Activity-CActivity-CForeground/Acti ve starts starts Background/Pause d
  • 34. R. Vasa, 201134 Short Problem 3 - Activity Stacking •Consider the following situation, Activity-AActivity-A Activity-BActivity-B Activity-CActivity-C starts starts Activity-AActivity-A starts Are these activities the same object? Ponder the interaction design implications ..... Will Back Button Exit the App?
  • 35. R. Vasa, 201135 Lets get our feet wet
  • 36. R. Vasa, 201136 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (using Global Variables) •Passing Data Demo (using Intents) •Controlling Input Type
  • 37. R. Vasa, 201137 Demo 1 - Life Cycle of an Android App. •Walk-through of code provided along with lecture handout. •We can see the states by adding a little bit of logging code to a few call-backs
  • 38. R. Vasa, 201138 Life-Cycle Demo onCreate, onStart, onResume etc. are from the Activity class
  • 39. R. Vasa, 201139 Life-Cycle Demo (Watching State)
  • 40. R. Vasa, 201140 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (Global Variables) •Application Manifest File •Passing Data Demo (using Intents) •Controlling Input Type
  • 41. R. Vasa, 201141 Demo 2 - Passing Data
  • 42. R. Vasa, 201142 Before data passing -- a quick recap •This app. makes use of nested layouts •We can also make it look a bit nicer using weights
  • 43. R. Vasa, 201143 Anatomy of the App. (Nested Layout) Linear Layout TextView ImageView Linear Layout Button (Fruit) Button (Vegetable) Button (Drink)
  • 44. R. Vasa, 201144 A Weighty Problem Spot the difference in layout How achieved? android:layout_weight=”1” for all buttons in the layout
  • 45. R. Vasa, 201145 Layout Weights are Handy If all buttons are given the same weight, then they will be of same size
  • 46. R. Vasa, 201146 Demo 2 - Passing Data Activity - FoodMain Activity - FoodView Data Passed: Name (“Fruit”) Image (fruit.png)
  • 47. R. Vasa, 201147 Passing Data with Globals •All Activities have a parent Application object •We can store data in this Application object Activity-AActivity-A Activity-CActivity-C Activity-BActivity-B ApplicatiApplicati onon Activities have a parent application We need to extend the Application class to do this
  • 48. R. Vasa, 201148 What Creates/Manages Application? •Application is created and managed by the Android runtime •There is one Application object created by default •We can extend the “Application Class” and make our own •But, we need to tell the Runtime about this Application object via the Manifest XML file
  • 49. R. Vasa, 201149 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (Global Variables) •Application Manifest File •Passing Data Demo (using Intents) •Controlling Input Type
  • 50. R. Vasa, 201150 Manifest contains Application Metadata • Android runtime creates the Application object • Application metadata is provided in the Manifest XML Manifest XML file is part of the project Auto-generated by Eclipse IDE
  • 51. R. Vasa, 201151 Manifest XML - What is it? Manifest informs Runtime about the App.Manifest informs Runtime about the App.
  • 52. R. Vasa, 201152 Manifest XML - Contents Application Name
  • 53. R. Vasa, 201153 Manifest XML - Contains Activity Names Activity Name(s)
  • 54. R. Vasa, 201154 Manifest XML - Refers to Icons Launcher Icon
  • 55. R. Vasa, 201155 Manifest XML - Refers to the App. Name Application Label
  • 56. R. Vasa, 201156 Passing Data with Globals •All Activities have a parent Application object •We can store data in this Application object FoodApplicatiFoodApplicati onon ApplicatiApplicati onon We need to extend the Application class to do this extends
  • 57. R. Vasa, 201157 Global Vars. can be in the Application FoodApplicatiFoodApplicati onon ApplicatiApplicati onon extends
  • 58. R. Vasa, 201158 Activities and Globals in Application •Activities can access data from the Application object We can also get to these variables from any Activi (declared in the Manifest XML file) We can also get to these variables from any Activit (declared in the Manifest XML file)
  • 59. R. Vasa, 201159 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (Global Variables) •Passing Data Demo (using Intents) •Controlling Input Type
  • 60. R. Vasa, 201160 Demo 2 - Passing Data using Intents Activity - FoodMain Activity - FoodView Data Passed: Name (“Fruit”) Image (fruit.png)
  • 61. R. Vasa, 201161 Wiring up the Buttons (Another Way) Buttons support onClick in the layout XML Buttons support onClick in the layout XML
  • 62. R. Vasa, 201162 Storing Data in a Bundle
  • 63. R. Vasa, 201163 Sending an Async. Message Android uses an asynchronous messaging model (known as Intents) to send messages between Activities Android uses an asynchronous messaging model (known as Intents) to send messages between Activities
  • 64. R. Vasa, 201164 Sending an Async. Message Setup Message and Store Data in the Message Setup Message and Store Data in the Message
  • 65. R. Vasa, 201165 Sending an Async. Message Class that is sending the Intent (message) Class that is sending the Intent (message)
  • 66. R. Vasa, 201166 Sending an Async. Message Class that will receive the Intent (message) Class that will receive the Intent (message) Class that is sending the Intent (message) Class that is sending the Intent (message)
  • 67. R. Vasa, 201167 Sending an Async. Message Send the Message to the Activity (Transmit) Send the Message to the Activity (Transmit)
  • 68. R. Vasa, 201168 Message Receiving Retrieve data from the message Retrieve data from the message
  • 69. R. Vasa, 201169 Intent Messages are Asynchronous •The intent system is completely asynchronous -- similar to e-mail •That is, •The receiver will get the message only if they request to see intents via getIntent() method •All transmitted messages are placed on a ‘Service Queue’
  • 70. R. Vasa, 201170 Complex Domain Models •Where do you hold a complex domain model?(E.g. we have 4-5 classes in a domain model) •We can hold a reference to the domain model objects in the Application •This is fine if there are only a few objects •Unlike Activity, Application is only terminated if device runs low on memory •If the data size is larger -- then best to use the sqlite database
  • 71. R. Vasa, 201171 Lecture Overview •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (Global Variables) •Passing Data Demo (using Intents) •Controlling Input Type
  • 72. R. Vasa, 201172 Controlling Input Data Type •A common task on forms is to restrict users to certain data types •Email Address •Decimal Numbers •Positive Integers •Alpha Numeric •On mobile devices -- development platforms offer a simple way to control the keyboard type
  • 73. R. Vasa, 201173 Controlling Input Type (Android) •Android has a large number of options •You can merge them to create more complex input types textUri textEmailAddress textPassword textPersonName number numberSigned numberDecimal numberPassword textUri textEmailAddress textPassword textPersonName number numberSigned numberDecimal numberPassword android:inputTypeandroid:inputType
  • 74. R. Vasa, 201174 Input Type - Example http://developer.android.com/reference/android/widget/TextView.html#attr_andro id:inputType More info. at the following URL
  • 75. R. Vasa, 201175 Lecture Recap •Recap (previous 2 weeks) •Passing Data between Activities •Data passing methods •Activity Design Choice •Activity Life Cycle •Passing Data Demo (Global Variables) •Passing Data Demo (using Intents) •Controlling Input Type
  • 76. R. Vasa, 201176 What’s next? •Usability Principles - Mobile Form Design •Using Dialogs •Returning data back from an Activity •Simple File I/O •More complex layouts •Exploring a few more widgets