Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Android 9 Development Cookbook

You're reading from   Android 9 Development Cookbook Over 100 recipes and solutions to solve the most common problems faced by Android developers

Arrow left icon
Product type Paperback
Published in Oct 2018
Publisher Packt
ISBN-13 9781788991216
Length 464 pages
Edition 3rd Edition
Languages
Tools
Arrow right icon
Author (1):
Arrow left icon
Rick Boyer Rick Boyer
Author Profile Icon Rick Boyer
Rick Boyer
Arrow right icon
View More author details
Toc

Table of Contents (18) Chapters Close

Preface 1. Activities FREE CHAPTER 2. Layouts 3. Views, Widgets, and Styles 4. Menus and Action Mode 5. Fragments 6. Home Screen Widgets, Search, and the System UI 7. Data Storage 8. Alerts and Notifications 9. Using the Touchscreen and Sensors 10. Graphics and Animation 11. A First Look at OpenGL ES 12. Multimedia 13. Telephony, Networks, and the Web 14. Location and Using Geofencing 15. Getting Your App Ready for the Play Store 16. Getting Started with Kotlin 17. Other Books You May Enjoy

Understanding the activity life cycle

As mobile hardware continues to improve, so too does the demand placed on that hardware. With increasingly more powerful applications and user multi-tasking, the already limited resources can be quite challenging. The Android OS has many features built in to help the user get the best performance from their device, such as limiting background processes, disabling application notifications, and allowing data limits. The OS will also manage application lifetime based on foreground tasks. If your application is in the foreground, the life cycle is straightforward. But as soon as your user switches tasks and your application is moved to the background, understanding the Android application life cycle becomes very important.

The following diagram shows the stages through which an activity passes during its lifetime:

Along with the stages, the diagram also shows the methods that can be overridden. As you can see, we've already utilized most of these methods in the preceding recipes. Hopefully, getting the big picture will help your understanding.

Getting ready

Create a new project in Android Studio with a Blank Activity, and call it ActivityLifecycle. We will use the (auto-generated) TextView method to display the state information.

How to do it...

To see the application move through the various stages, we will create methods for all
the stages:

  1. Open activity_main.xml and add an ID to the auto-generated TextView:
android:id="@+id/textViewState" 
  1. The remaining steps will be in MainActivity.java. Modify the onCreate() method to set the initial text:
((TextView)findViewById(R.id.textViewState)).setText("onCreate()n");
  1. Add the following methods to handle the remaining events:
@Override
protected void onStart() {
super.onStart();
((TextView)findViewById(R.id.textViewState)).append("onStart()\n");
}

@Override
protected void onResume() {
super.onResume();
((TextView)findViewById(R.id.textViewState)).append("onResume()\n");
}

@Override
protected void onPause() {
super.onPause();
((TextView)findViewById(R.id.textViewState)).append("onPause()\n");
}

@Override
protected void onStop() {
super.onStop();
((TextView)findViewById(R.id.textViewState)).append("onStop()\n");
}

@Override
protected void onRestart() {
super.onRestart();
((TextView)findViewById(R.id.textViewState)).append("onRestart()\n");
}

@Override
protected void onDestroy() {
super.onDestroy();
((TextView)findViewById(R.id.textViewState)).append("onDestroy()\n");
}
  1. Run the application and observe what happens when the activity is interrupted by pressing the Back and Home keys. Try other actions, such as task switching, to see how they impact your application.

How it works...

Our activity can exist in one of these three states: active, paused, or stopped. There is also
a fourth state, destroyed (but there's no guarantee the OS will ever call it):

  • An activity is in the active state when its interface is available for the user. It persists from onResume() until onPause(), which is brought about when another activity comes to the foreground. If this new activity does not entirely obscure our activity, then ours will remain in the paused state until the new activity is finished or dismissed. It will then immediately call onResume() and continue.
  • When a newly started activity fills the screen or makes our activity invisible, then our activity will enter the stopped state, and resumption will always invoke a call to onRestart().
  • When an activity is in either the paused or stopped state, the operating system can (and will) remove it from the memory when the memory is low or when other applications demand it.
  • It is worth noting that we never actually see the results of the onDestroy() method, as the activity is removed by this point. If you want to explore these methods further, then it is well worth employing Activity.isFinishing() to see whether the activity is really finishing before onDestroy() is executed, as seen in the following snippet:
@Override
public void onPause() {
super.onPause();
((TextView)findViewById(R.id.textViewState)).append("onPause()\n");
if (isFinishing()){
((TextView)findViewById(R.id.textViewState)).append(" ... finishing");
}
}
When implementing these methods, always call the superclass before doing any work.

There's more...

To shut down an activity, directly call its finish() method, which in turn calls onDestroy(). To perform the same action from a child activity, use finishFromChild(Activity child), where child is the calling subactivity.

It is often useful to know whether an activity is being shut down or merely paused, and the isFinishing(boolean) method returns a value that indicates which of these two states the activity is in.

You have been reading a chapter from
Android 9 Development Cookbook - Third Edition
Published in: Oct 2018
Publisher: Packt
ISBN-13: 9781788991216
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €18.99/month. Cancel anytime