[go: up one dir, main page]

0% found this document useful (0 votes)
93 views55 pages

Chapter5 Android Activity Lifecycle and Intents

The document discusses Android activity lifecycles and intents. It explains that activities provide the window for an app's UI and that most apps contain multiple activities. It describes the various callback methods in an activity's lifecycle, like onCreate(), onStart(), onResume(), onPause(), onStop(), and onDestroy(). It emphasizes the importance of handling these callbacks properly to avoid crashes or lost data when interruptions occur. The document also introduces intents as messaging objects that can be used to start new activities or services within an app or other apps.

Uploaded by

Syamira Property
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
93 views55 pages

Chapter5 Android Activity Lifecycle and Intents

The document discusses Android activity lifecycles and intents. It explains that activities provide the window for an app's UI and that most apps contain multiple activities. It describes the various callback methods in an activity's lifecycle, like onCreate(), onStart(), onResume(), onPause(), onStop(), and onDestroy(). It emphasizes the importance of handling these callbacks properly to avoid crashes or lost data when interruptions occur. The document also introduces intents as messaging objects that can be used to start new activities or services within an app or other apps.

Uploaded by

Syamira Property
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 55

CHAPTER 5

Android Activity Lifecycle and


Intents
(Coding the application)
Course Outline Chapter 5

• Coding the application


• Activities
• Creating Activities
• Working with framework class
• Installing application
• Responding to error
Activity

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


 Serve as the entry point for a user's interaction with an app
 An activity provides the window in which the app draws its
UI.
 Most apps contain multiple screens, which means they
comprise multiple activities.
 Each activity is only loosely bound to the other activities;
there are usually minimal dependencies among the
activities in an app.
 Often presented to the user as full-screen windows, can
also be used as floating windows or embedded inside of
another activity.
Create Activities
Android
Activity
LifeCycle
Starting Activities
 Android applications don't start with a call to
main(String[])
 Instead callbacks invoked corresponding to app state.
 Examples:
 When activity is created, its onCreate( ) method invoked (like
constructor)
 When activity is paused, its onPause( ) method invoked

 callback methods also invoked to destroy Activity /app


Activity Callbacks
 onCreate() Already saw this (initially called)

 onStart()
 onResume()
 onPause()
 onStop()
 onRestart()
 onDestroy()
Understanding Android
Lifecycle
 Many disruptive things could happen while app is running
 Incoming call or text message, user switches to another app, etc

 Well designed app should NOT:


Crash if interrupted, or user switches to other app
 Lose the user's state/progress (e.g state of chess game app) if
they leave your app and return later
 Crash or lose the user's progress when the screen rotates
between landscape and portrait orientation.
 E.g. Youtube video should continue at correct point after rotation
 To handle these situations, appropriate callback methods
must be invoked appropriately

http://developer.android.com/training/basics/activity-lifecycle/starting.html
OnCreate( )
 Initializes activity once created
 Operations typically performed in onCreate() method:
 Inflate widgets and place them on screen
 (e.g. using layout files with setContentView( ) )
 Getting references to inflated widgets ( using
findViewbyId( ) )
 Setting widget listeners to handle user interaction
 Example

 Note: AŶdroid OS calls apps’ oŶCreate; Ϳ ŵethod


Activity State Diagram: Running
App
 A running app is one that user is currently
using or interacting with
 Visible, in foreground
Activity State Diagram: Paused App
 An app is paused if it is visible but no longer in
foreground
 E.g. blocked by a pop-up dialog box
 App’s onPause( ) method is called during
transition from running to paused state

Paused

Running
Activity State Diagram: onPause( ) Method
 Typical actions taken in onPause( ) method
 Stop animations or CPU intensive tasks

 Stop listening for GPS, broadcast


information
 Release handles to sensors (e.g GPS,
camera)
 Stop audio and video if appropriate

Paused

Running
Activity State Diagram: Resuming Paused
App
 A paused app resumes running if it becomes fully
visible and in foreground
 E.g. pop-up dialog box blocking it goes away
 App’s onResume( ) method is called during
transition from paused to running state
 Restart videos, animations, GPS checking, etc

Paused

Running
Activity State Diagram: Stopped App
 An app is stopped if it no longer visible and no
longer in foreground
 E.g. user starts using another app
 App’s onStop( ) method is called during transition
from paused to stopped state

Running
onStop() Method
 An activity is stopped when:
 User receives phone call

 User starts a new application

 Activity 1 launches new Activity 2

 Activity instance and variables of stopped app


are retained but no code is being executed by
the activity
 If activity is stopped, in onStop( ) method, well
behaved apps should
 save progress to enable seamless restart later

 Release all resources, save info (persistence)


Activity State Diagram: Stopped App
 A stopped app can go back into running state if
becomes visible and in foreground
 App’s onStart( ) and onResume( ) methods
called
to transition from stopped to running state

Running
Activity State Diagram: Starting New
 App
To start new app, app is
launched
 App’s onCreate( ), onStart( ) and
onResume( ) methods are called
 Afterwards new app is running
Logging Errors in
Android
Logging Errors in
Android
 Android can log and display various types of
errors/warnings
 Error logging is in Log class of android.util package
import android.util.Log;
 Turn on logging of different message types by calling
appropriate method
 Logged errors/warnings displayed in Android Studio window

Ref: Introduction to Android


Programming, Annuzzi, Darcey &
Conder
QuizActivity.java
 A good way to understand
Android lifecycle methods is to
print debug messages when they
are called
 E.g. print debug message from
onCreate method below
QuizActivity.java
 Debug (d) messages have the
form

 E.g.

 Then declare string for


TAG
QuizActivity.java
 Putting it all together
QuizActivity.java
 Can overide more
lifecycle methods

 Print debug
messages from each
method

 Superclass calls called


in each method
QuizActivity.java Debug Messages

 Launching GeoQuiz app creates, starts and


resumes
an activity

 Pressing Back button destroys the activity


(calls onPause, onStop and onDestroy)
Rotating Device
Rotating Device: Using Different Layouts
 Rotating device (e.g. portrait to landscape) kills current
activity and creates new activity in landscape mode
 Rotation changes device configuration
 Device configuration: screen orientation/density/size,
keyboard type, dock mode, language, etc.
 Apps can specify different resources (e.g. XML layout
files, images) to use for different device configurations

 E.g. use different app layouts for portrait vs landscape


screen orientation
Rotating Device: Using Different Layouts
 When device in landscape, uses layout (XML) file
in
res/layout-land/
 Copy XML layout file (activity_quiz.xml) from
res/layout to res/layout-land/ and tailor it
 When configuration changes, current activity
destroyed, onCreate (setContentView
(R.layout.activity_quiz) called again
Dead or Destroyed Activity

 onDestroy( ) called to destroy a stopped


app
Saving State
Data
Activity Destruction
 App may be destroyed
 On its own by calling finish

 If user presses back button

 Before Activity destroyed, system calls


onSaveInstanceState
 Saves state required to recreate Activity
later
 E.g. Save current positions of game pieces
onSaveInstanceState
onRestoreInstanceState()
 Systems write info about views to Bundle
 other (app-specific) information must be
saved by programmer
 E.g. board state in a board game such as
mastermind
 When Activity recreated Bundle sent to
onCreate and onRestoreInstanceState()
 Can use either method to restore state
data
/ instance variables
Saving State on Activity
Destruction

Can restore state data in either method


Saving Data Across Device Rotation
 Since rotation causes activity to be destroyed and
new
one created, values of variables lost or reset
 To stop lost or reset values, save them using
onSaveInstanceState before activity is destroyed
 E.g. called before portrait layout is destroyed
 System calls onSaveInstanceState before onPause( ),
onStop( ) and onDestroy( )
Saving Data Across Device Rotation
 For example, if we want to save the value of a
variable
mCurrentIndex during rotation
 First, create a constant as a key for storing data in the
bundle

 Then override onSaveInstanceState


method
Quiz
 Whenever I watch YouTube video on my
phone, if I receive a phone call and
video stops at 2:31, after call, when app
resumes, it should restart at 2:31.
 How do you think this is implemented?
 In which Activity life cycle method
should code be put into?
 How?
Intents
Intent
 Intent: a messaging object used by a component to
request action from another app or component
 3 main use cases for Intents
 Case 1 (Activity A starts Activity B, no result back):
 Call startActivity( ), pass an Intent
 Intent describes Activity to start, carries any necessary data
Intent: Result Received
Back
 Case 2 (Activity A starts Activity B, gets result back):
 Call startActivityForResult( ), pass an Intent
 Separate IŶteŶt received iŶ Activity A’s onActivityResult( ) callback

 Case 3 (Activity A starts a Service):


 E.g. Activity A starts service to download big file in the
background
 Activity A calls StartService( ), passes an Intent
 Intent describes Service to start, carries any necessary data
Implicit Vs Explicit
Intents
 Explicit Intent: If components sending and receiving
Intent
are in same app
 E.g. Activity A starts Activity B in same app

 Implicit Intent: If components sending and receiving


Intent are in different apps
Intent Example:
Starting Activity
2
from Activity 1
Allowing User to Cheat
Ref: Android Nerd Ranch (2nd edition) pg 87
 Goal: Allow user to cheat by getting answer to
quiz
 Screen 2 pops up to show Answer
Activity 1 Activity 2

Correct
Answer

User clicks here Ask again.


to cheat Click here
to cheat
If user
cheated
Add Strings for Activity 1 and Activity 2
to strings.xml
Create Blank Activity (for Activity 2) in
Android Studio
Specify Name and XML file for Activity
2

Screen 2 Java
code in
CheatActivity.java
Layout
uses activity_cheat.xml
Design Layout for Screen 2
Activity 2
Write XML Layout Code for Screen 2

Activity 2
Declare New Activity in
AndroidManifest.xml
Create new activity (CheatActivity) in Android
Studio

Activity 1
Activity 2 (CheatActivity)

Activity 2 (CheatActivity)
Starting Activity 2 from Activity 1
 Activity 1 starts activity 2
 through the Android OS
 by calling startActivity(Intent)
 Passes Intent (object for communicating with Android
OS)

 Intent specifies which (target) Activity


Android
Starting Activity 2 from Activity 1
 Intents have many different constructors. We will use
form:

 Actual code looks like


this

Build Intent
Use Intent to Start new
Activity
Parent
New Activity 2
Activity
Implicit vs Explicit
Intents
 Previous example is called an explicit intent
 Activity 1 and activity 2 are in same app
 If Activity 2 were in another app, an implicit intent
would have to be created instead
 Can also pass data between Activities 1 and 2
 E.g. Activity 1 can tell new activity correct answer (True/False)
Passing Data Between

Activities
Need to pass answer (True/False from QuizActivity to
CheatActivity)

 Pass answer as extra on the Intent passed into StartActivity


 Extras are arbitrary data calling activity can include with
intent
Passing Answer (True/False) as Intent
Extra
To add extra to Intent, use putExtra( ) command
 Encapsulate Intent creation into a method
newIntent( )

 When user clicks cheat button, build Intent, start new


Activity

Intent
Passing Answer (True/False) as Intent
Extra
 Activity receiving the Intent retrieves it using
getBooleanExtra( )

Calls
getIntent( )

Intent

Important: Read Android Nerd


Ranch (2nd edition) pg 87
Implicit
 Intents
Implicit Intent: Does not name component to start.
 Specifies
 Action (what to do, example visit a web page)

 Data (to perform operation on, e.g. web page url)

 System decides component to receive intent based on action, data,


category
 Example Implicit Intent to share data

ACTION (No receiving Activity


specified)

Data type
References
 Android Nerd Ranch, 1st edition
 Busy Coder’s guide to AŶdroid versioŶ 4.4
 CS 65/165 slides, Dartmouth College, Spring
2014
 CS 371M slides, U of Texas Austin, Spring 2014

You might also like