Professional Documents
Culture Documents
Session 2
2016
Outline
Activities
UI Events
Intents
Practice
Assignment
1 / 33
Activities
2 / 33
Activity
• An activity provides a user interface (UI) for a single screen in an
app
◦ Each activity is given a window in which is drawn its UI.
◦ The window typically fills the screen, but may be smaller than the
screen and float on top of other windows.
◦ To create an activity, you must create a subclass of Activity (or an
existing subclass of it.
• An app usually consists of multiple activities.
◦ One activity in an app is specified as the ”main” activity, which is
presented to the user when launching the app for the first time
(defined in the manifest.xml file).
◦ An activity can start activities of the app (and also from other apps).
• Each time a new activity starts, the previous activity is stopped,
but the system preserves the activity in a stack (Back Stack).
◦ Activities can move into the background and then be resumed with
their state restored.
3 / 33
Back Stack
• Activities are arranged in a stack (Back Stack), in the order in
which each activity is opened.
4 / 33
Activity States
5 / 33
Activity Lifecycle
6 / 33
Activity Lifetime (I)
• The entire lifetime of an activity happens between the call to
onCreate and the call to onDestroy.
◦ Perform setup of “global” state (such as defining layout) in
onCreate, and release all remaining resources in onDestroy.
◦ For example, if your activity has a thread running in the background
to download data from the network, it might create that thread in
onCreate and then stop the thread in onDestroy.
• The visible lifetime of an activity happens between the call to
onStart and the call to onStop.
◦ The user can see the activity on-screen and interact with it.
◦ The system might call onStart and onStop multiple times during the
entire lifetime of the activity, as the activity alternates between being
visible and hidden to the user.
7 / 33
Activity Lifetime (II)
• The foreground lifetime of an activity happens between the call
to onResume and the call to onPause.
◦ The activity is in front of all other activities on screen and has user
input focus.
◦ An activity can frequently transition in and out of the foreground
• For example, onPause is called when the device goes to sleep or when a
dialog appears.
• The code in these two methods should be fairly lightweight in order to
avoid slow transitions that make the user wait.
8 / 33
Using lifecycle callbacks (I)
• Use the onCreate callback to:
◦ Initialize the essential components of your activity.
◦ (Most important) call setContentView method to define the layout
for the activity.
• Use the onPause callback to:
◦ Stop animations or other ongoing actions that could consume CPU.
◦ Commit unsaved changes, but only if users expect such changes to be
permanently saved when they leave (such as a draft email).
◦ Release system resources, such as broadcast receivers, handles to
sensors (like GPS), or any resources that may affect battery life while
your activity is paused and the user does not need them.
9 / 33
Using lifecycle callbacks (II)
• Use onResume callback to:
◦ Initialize components that you release during onPause
◦ Perform any other initializations that must occur each time the
activity enters the Resumed
• Use onStop callback to:
◦ Perform larger, more CPU intensive shut-down operations, such as
writing information to a database.
10 / 33
onSaveInstanceState &onRestoreInstanceState
• These two methods are intended specifically for saving and
restoring the dynamic state of an activity.
• onRestoreInstanceState(Bundle savedInstanceState)
◦ To this method is passed a Bundle object containing the previous
state data.
◦ This method is typically used in situations where it makes more sense
to restore a previous state after the initialization of the activity has
been performed in onCreate and onStart.
• onSaveInstanceState(Bundle outState)
◦ To the method is passed the Bundle object into which the state
should be saved and which is subsequently passed through to the
onCreate and onRestoreInstanceState methods when the activity
is restarted.
11 / 33
UI Events
12 / 33
Handling events and messages
13 / 33
Event listeners
• Event Listeners
◦ It is an interface in the View class that contains a callback method.
◦ Callback method is invoked when the View is triggered by user
interaction.
• Event Listeners Registration
◦ It is the process by which an Event Handler gets registered with an
Event Listener so that the handler is called when the Event Listener
fires the event.
• Event Handlers
◦ It is the callback method that actually handles the event.
14 / 33
Intents
15 / 33
What is an Intent
• An Intent is a messaging object you can use to request an action
from another app component.
• Intents facilitate communication between components in several
ways.
16 / 33
What is in an Intent
• An Intent object carries information that the Android system uses
to determine which component to start, plus information that the
recipient component uses in order to properly perform the action.
• The primary information contained in an Intent is the following:
◦ Component name: The name of the component to start.
◦ Action: A string that specifies the generic action to perform (such as
view or pick).
◦ Data: The URI (a Uri object) that references the data to be acted on
and/or the MIME type of that data.
◦ Category: A string containing additional information about the kind
of component that should handle the intent.
◦ Extras: Key-value pairs that carry additional information required to
accomplish the requested action.
◦ Flags: Flags defined in the Intent class that function as metadata for
the intent.
17 / 33
Intent Types
• Implicit intents
◦ Do not name a specific component, but instead declare a general
action to perform, which allows a component from another app to
handle it.
◦ For example, if you want to show the user a location on a map, you
can use an implicit intent to request that another capable app show a
specified location on a map.
• Explicit intents
◦ Specify the component to start by name (the fully-qualified class
name).
◦ Used to start a component in your own app, because you know the
class name of the activity or service you want to start.
18 / 33
Implicit Intents
19 / 33
Explicit intents
• The system starts the app component specified in the Intent object.
22 / 33
Practice
23 / 33
Activity lifecycle app (I)
24 / 33
Activity lifecycle app (II)
25 / 33
Working with Intents (I)
• Passing data to launched Activity
26 / 33
Working with Intents (II)
• Receiving data from launched Activity
27 / 33
Working with Intents (III)
• Launching Activity from other App
28 / 33
Assignment
29 / 33
Assignment (I)
30 / 33
Assignment (II)
• Add, implemented as an Option Menu.
31 / 33
Assignment (III)
• Delete, implemented as a Context Menu.
32 / 33
Assignment (IV)
• Edit, implemented as a Context Menu.
33 / 33