Home Java javaTutorial Detailed explanation of the life cycle of activities in Android development

Detailed explanation of the life cycle of activities in Android development

Jan 07, 2017 pm 04:19 PM

The examples in this article describe the life cycle of Android activity. Share it with everyone for your reference, the details are as follows:

The activity class is in the android.app package, and the inheritance system is as follows:

1.Java.lang.Object

2. android.content.Context

3.android.app.ApplicationContext

4.android.app.Activity

activity is separate and used to handle user operations. Almost all activities have to deal with users, so the activity class creates a window. Developers can put the UI on the window created by the activity through the setContentView(View) interface. When the activity points to the full-screen window, it can also be implemented in other ways. : As a floating window (through the theme collection of windowIsFloating), or embedded in other activities (using ActivityGroup). Most Activity subclasses need to implement the following two interfaces:

① The onCreate(Bundle) interface is where the activity is initialized. Here you can usually call setContentView(int) to set the UI defined in the resource file. Use findViewById(int) to get the window defined in the UI.

② The onPause() interface is where the user is ready to leave the activity. Here, any modifications should be submitted (usually used by ContentProvider to save data ).

In order to use Context.startActivity(), all activity classes must have related "activity" items defined in the AndroidManifest.xml file.

The activity class is an important part of the Android application life cycle.

Activity life cycle

Activities in the system are managed by an Activity stack. When a new Activity is started, it will be placed on the top of the stack and become a running Activity. The previous Activity will remain in the stack and will no longer be placed in the foreground until the new Activity exits.

Activity has four essentially different states:

1. In the foreground of the screen (top of the Activity stack), it is called the active state or running state (active or running)

2. If an Activity loses focus but is still visible (a new non-full-screen Activity or a transparent Activity is placed on the top of the stack), it is called Paused. A suspended Activity remains alive (keeps all state, member information, and connection to the window manager), but will be killed if the system memory is extremely low.

3. If an Activity is completely covered by another Activity, it is called Stopped. It still retains all state and member information, but it is no longer visible, so its window is hidden, and the Stopped Activity will be killed when system memory needs to be used elsewhere.

4. If an Activity is in the Paused or Stopped state, the system can delete the Activity from the memory. The Android system uses two methods to delete it, either requiring the Activity to end or directly killing its process. When the activity is shown to the user again, it must restart and reset the previous state.

The following figure shows the important state transitions of Activity. The rectangular box indicates the callback interface of Activity between state transitions. Developers can overload the implementation to execute relevant code. The colored ovals indicate the activity's callback interface. state.

Detailed explanation of the life cycle of activities in Android development

In the above figure, Activity has three key cycles:

1. The entire life cycle, starting from onCreate(Bundle) to onDestroy() Finish. Activity sets all "global" state in onCreate() and releases all resources in onDestory(). For example, if an Activity has a thread running in the background for downloading data from the network, the Activity can create the thread in onCreate() and stop the thread in onDestory().

2. The visible life cycle starts from onStart() and ends with onStop(). During this time, the Activity can be seen on the screen, although it may not be in the foreground and cannot interact with the user. Between these two interfaces, it is necessary to maintain the UI data and resources displayed to the user. For example, you can register an IntentReceiver in onStart to listen for changes in the UI caused by data changes. When the display is no longer needed, you can register it in onStop() Unregister it in . Both onStart() and onStop() can be called multiple times because the Activity can switch between visible and hidden at any time.

3. The life cycle of the foreground starts from onResume() and ends with onPause(). During this time, the activity is at the front of all activities and interacts with the user. Activity can frequently switch between resumed and paused states, for example: when the device is preparing to sleep, when an Activity processing result is dispatched, and when a new Intent is dispatched. So the code in these interface methods should be very lightweight.

The entire life cycle of Activity is defined in the following interface methods, and all methods can be overloaded. All Activities need to implement onCreate(Bundle) to initialize settings. Most Activities need to implement onPause() to submit changed data. Currently, most Activities also need to implement the onFreeze() interface to restore in onCreate(Bundle). The status of the setting.

public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
Copy after login

I hope this article will be helpful to everyone in Android programming.

For more detailed articles on the life cycle of activities in Android development, please pay attention to the PHP Chinese website!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1666
14
PHP Tutorial
1273
29
C# Tutorial
1252
24
Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Apr 19, 2025 pm 04:51 PM

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

How do I convert names to numbers to implement sorting and maintain consistency in groups? How do I convert names to numbers to implement sorting and maintain consistency in groups? Apr 19, 2025 pm 11:30 PM

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

How to simplify field mapping issues in system docking using MapStruct? How to simplify field mapping issues in system docking using MapStruct? Apr 19, 2025 pm 06:21 PM

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

How to elegantly obtain entity class variable names to build database query conditions? How to elegantly obtain entity class variable names to build database query conditions? Apr 19, 2025 pm 11:42 PM

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? Apr 19, 2025 pm 11:45 PM

Start Spring using IntelliJIDEAUltimate version...

How to safely convert Java objects to arrays? How to safely convert Java objects to arrays? Apr 19, 2025 pm 11:33 PM

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

How to use the Redis cache solution to efficiently realize the requirements of product ranking list? How to use the Redis cache solution to efficiently realize the requirements of product ranking list? Apr 19, 2025 pm 11:36 PM

How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? Apr 19, 2025 pm 11:27 PM

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...

See all articles