Mastering the Android Activity Lifecycle: Android

Jaykishan Sewak
4 min readMay 28, 2023

--

So friends today I am writing article on activity life cycle, I know its quite old topic and many articles are available but I am trying to explain things in more simpler way with code snippet.

Introduction: The Android Activity Lifecycle is a crucial aspect of Android application development. Understanding its stages and transitions is vital for building robust and efficient applications. In this article, we will explore the Android Activity Lifecycle in detail, accompanied by code examples, to help you grasp its concepts effectively.

Understanding the Basics:Before diving into the code examples, let’s recap the basic components involved in the Android Activity Lifecycle:

1. Activities: An activity represents a single screen with a user interface. It serves as a building block for creating interactive applications.

2. States: An activity can be in various states, including Created, Started, Resumed, Paused, Stopped, and Destroyed. Each state represents a specific phase of an activity’s lifecycle.

Now, let’s explore the stages of the Android Activity Lifecycle using code examples:

1. onCreate() — Initialization of Activity:

The onCreate() method is called when an activity is first created. It is where developers initialize essential components and perform setup tasks. Let’s consider an example of a simple login activity:

public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

// Initialize UI components and set listeners
Button loginButton = findViewById(R.id.btn_login);
EditText usernameEditText = findViewById(R.id.et_username);
EditText passwordEditText = findViewById(R.id.et_password);

loginButton.setOnClickListener(v -> {
// Perform login authentication logic
String username = usernameEditText.getText().toString();
String password = passwordEditText.getText().toString();
authenticateUser(username, password);
});
}

private void authenticateUser(String username, String password) {
// Perform authentication logic here
}
}

In the above example, the onCreate() method initializes UI components (login button, username, and password fields) and sets a click listener for the login button. It also defines a method `authenticateUser()` for handling login authentication.

2. onStart() and onResume() — Activity in Foreground:

The onStart() method is called when the activity becomes visible to the user, and the onResume() method is called when the activity is in the foreground and ready to interact with the user. Let’s expand the previous example:

public class LoginActivity extends AppCompatActivity {
// ... onCreate() and authenticateUser() methods

@Override
protected void onStart() {
super.onStart();
// Perform additional setup or register listeners
}

@Override
protected void onResume() {
super.onResume();
// Update UI or resume ongoing tasks
}
}

In the above example, the onStart() method can be used to perform additional setup tasks or register event listeners specific to the login activity. The onResume() method can be used to update the UI with the latest information or resume any ongoing tasks.

3. onPause() — Activity Losing Focus:

The onPause() method is called when the activity loses focus, typically when another activity comes into the foreground. It provides an opportunity to save crucial data or release resources to ensure efficient memory management. Let’s modify our LoginActivity example:

public class LoginActivity extends AppCompatActivity {
// ... onCreate(), onStart(), onResume(), and authenticateUser() methods

@Override
protected void onPause() {
super.onPause();
// Save user input or release resources
}
}

In the above example, the onPause() method can be used to save the user’s input, such as username and password, or release resources like network connections to prevent resource leaks.

4. onStop() — Activity in the Background:

The onStop() method is called when the activity is no longer visible to the user. It is an ideal

stage for releasing resources that are not required while the activity is in the background. Let’s enhance the LoginActivity example:

public class LoginActivity extends AppCompatActivity {
// ... onCreate(), onStart(), onResume(), onPause(), and authenticateUser() methods

@Override
protected void onStop() {
super.onStop();
// Release resources or stop background tasks
}
}

In the above example, the onStop() method can be used to release any resources that are not needed while the activity is in the background, such as stopping background network requests or releasing heavy memory allocations.

5. onDestroy() — Activity Destruction:

The onDestroy() method is called when the activity is being destroyed or finished. It allows developers to perform final cleanup operations and release system resources. Let’s conclude our LoginActivity example:

public class LoginActivity extends AppCompatActivity {
// ... onCreate(), onStart(), onResume(), onPause(), onStop(), and authenticateUser() methods

@Override
protected void onDestroy() {
super.onDestroy();
// Perform final cleanup operations or release resources
}
}

In the above example, the onDestroy() method can be used to release any remaining resources, such as closing database connections, cleaning up files, or unregistering listeners.

Conclusion:

Mastering the Android Activity Lifecycle is crucial for developing efficient and user-friendly Android applications. By understanding the various stages and incorporating the appropriate code examples, you can manage resources effectively, handle user interactions smoothly, and create seamless user experiences. Remember to implement the lifecycle methods correctly, release resources appropriately, and consider the specific requirements of your application during each stage.

--

--

Jaykishan Sewak

Mobile Lead | Android Tech Lead at HSBC | Flutter | MVVM | JetPack Compose | kotlin | Medium blog writer | GitHub Contributor