Bird
Raised Fist0
Android Kotlinmobile~7 mins

Activity lifecycle methods (onCreate, onStart, onResume, onPause, onStop, onDestroy) in Android Kotlin

Choose your learning style10 modes available
Introduction

Activity lifecycle methods help your app know what to do when the screen opens, closes, or changes. They keep your app working smoothly and save resources.

When you want to set up your screen when it first opens.
When you need to pause a video or game when the user switches apps.
When you want to save data before the app closes.
When you want to restart animations or refresh data when the user returns.
When you want to clean up resources to save battery and memory.
Syntax
Android Kotlin
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Initialize your activity here
}

override fun onStart() {
    super.onStart()
    // Activity is becoming visible
}

override fun onResume() {
    super.onResume()
    // Activity starts interacting with the user
}

override fun onPause() {
    super.onPause()
    // Activity is partially visible, pause ongoing actions
}

override fun onStop() {
    super.onStop()
    // Activity is no longer visible
}

override fun onDestroy() {
    super.onDestroy()
    // Clean up resources before activity is destroyed
}

Each method calls super to keep the system working properly.

Methods run in a specific order as the activity moves through states.

Examples
Set the layout when the activity is created.
Android Kotlin
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}
Pause ongoing actions when the activity is partially hidden.
Android Kotlin
override fun onPause() {
    super.onPause()
    // Pause music or animations here
}
Clean up before the activity is destroyed to avoid memory leaks.
Android Kotlin
override fun onDestroy() {
    super.onDestroy()
    // Release resources like database or sensors
}
Sample App

This example logs messages to the console each time a lifecycle method runs. You can watch these logs to understand when each method is called as you open, use, and close the app.

Android Kotlin
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d("Lifecycle", "onCreate called")
    }

    override fun onStart() {
        super.onStart()
        Log.d("Lifecycle", "onStart called")
    }

    override fun onResume() {
        super.onResume()
        Log.d("Lifecycle", "onResume called")
    }

    override fun onPause() {
        super.onPause()
        Log.d("Lifecycle", "onPause called")
    }

    override fun onStop() {
        super.onStop()
        Log.d("Lifecycle", "onStop called")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d("Lifecycle", "onDestroy called")
    }
}
OutputSuccess
Important Notes

Use onCreate to set up your UI and initialize variables.

onPause and onStop are good places to save data or pause tasks.

onDestroy is the last chance to clean up before the activity is removed.

Summary

Activity lifecycle methods let your app respond to changes in screen visibility and user interaction.

Always call super in each lifecycle method to keep the system stable.

Use these methods to manage resources, save data, and keep your app smooth and efficient.

Practice

(1/5)
1. Which lifecycle method is called first when an Android activity is launched?
onCreate(), onStart(), onResume(), or onPause()?
easy
A. onStart()
B. onResume()
C. onCreate()
D. onPause()

Solution

  1. Step 1: Understand activity launch sequence

    When an activity starts, onCreate() is the first method called to set up the UI and initialize components.
  2. Step 2: Confirm order of lifecycle methods

    After onCreate(), onStart() and onResume() follow, but they are not first.
  3. Final Answer:

    onCreate() -> Option C
  4. Quick Check:

    First lifecycle method = onCreate() [OK]
Hint: Remember: onCreate() is always first when activity starts [OK]
Common Mistakes:
  • Confusing onStart() as the first method
  • Thinking onResume() is called before onCreate()
  • Assuming onPause() is called on launch
2. Which of the following is the correct Kotlin syntax to override the onPause() method in an Android activity?
easy
A. override fun onPause() { pause.super() }
B. fun onPause() { super.onPause() }
C. override onPause() { super.onPause() }
D. override fun onPause() { super.onPause() }

Solution

  1. Step 1: Check Kotlin override syntax

    In Kotlin, to override a method, use override fun methodName() and call super.methodName() inside.
  2. Step 2: Validate each option

    override fun onPause() { super.onPause() } correctly uses override fun onPause() and calls super.onPause(). Others miss override keyword, have wrong syntax, or wrong super call.
  3. Final Answer:

    override fun onPause() { super.onPause() } -> Option D
  4. Quick Check:

    Correct override syntax = override fun onPause() { super.onPause() } [OK]
Hint: Always use 'override fun method()' and call 'super.method()' inside [OK]
Common Mistakes:
  • Omitting the override keyword
  • Calling super incorrectly
  • Wrong function declaration syntax
3. Consider this Kotlin code snippet inside an activity:
override fun onPause() {
    super.onPause()
    println("Paused")
}
override fun onStop() {
    super.onStop()
    println("Stopped")
}

What will be printed if the user presses the home button while the activity is visible?
medium
A. Stopped Paused
B. Paused Stopped
C. Paused
D. Stopped

Solution

  1. Step 1: Understand lifecycle on home press

    Pressing home triggers onPause() first, then onStop() as activity goes to background.
  2. Step 2: Check print order

    Since onPause() runs before onStop(), "Paused" prints first, then "Stopped".
  3. Final Answer:

    Paused Stopped -> Option B
  4. Quick Check:

    onPause() then onStop() prints = Paused, Stopped [OK]
Hint: onPause() always runs before onStop() when leaving activity [OK]
Common Mistakes:
  • Assuming onStop() runs before onPause()
  • Thinking only one method runs on home press
  • Confusing print order
4. This code snippet is intended to save data when the activity is paused:
override fun onPause() {
    saveData()
}

What is the main problem with this code?
medium
A. Missing call to super.onPause()
B. saveData() should be called in onStop() instead
C. onPause() cannot be overridden
D. saveData() must be asynchronous

Solution

  1. Step 1: Check lifecycle method override rules

    When overriding lifecycle methods, always call super.method() to keep system stable.
  2. Step 2: Identify missing super call

    The code lacks super.onPause(), which can cause unexpected behavior.
  3. Final Answer:

    Missing call to super.onPause() -> Option A
  4. Quick Check:

    Always call super in lifecycle overrides [OK]
Hint: Never forget super.onPause() when overriding onPause() [OK]
Common Mistakes:
  • Forgetting to call super method
  • Thinking onPause() can't be overridden
  • Assuming saveData() timing is wrong
5. You want to release a camera resource when the activity is no longer visible to save battery. Which lifecycle method is the best place to release the camera?
A) onDestroy()
B) onStop()
C) onPause()
D) onResume()
hard
A. onPause()
B. onStop()
C. onDestroy()
D. onResume()

Solution

  1. Step 1: Understand visibility and resource management

    When activity is partially or fully hidden, onPause() is called first, signaling to release resources like camera to save battery.
  2. Step 2: Compare lifecycle methods for releasing resources

    onStop() is later, but releasing in onPause() ensures resources are freed as soon as activity is not in foreground. onDestroy() may never be called if system kills process. onResume() is for acquiring resources.
  3. Final Answer:

    onPause() -> Option A
  4. Quick Check:

    Release resources in onPause() to save battery [OK]
Hint: Release heavy resources in onPause(), reacquire in onResume() [OK]
Common Mistakes:
  • Waiting until onStop() or onDestroy() to release resources
  • Releasing resources in onResume() by mistake
  • Not releasing resources early enough
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard