Search code examples
androidandroid-activityandroid-lifecycle

Why only the first activity's `onDestroy` is called, not other activities?


(I searched quite a bit, but there seems no exact answer for this.)

Let's say there's an app. We can push a button to start another activity.

Like this: Activity1 -> Activity2 -> Activity3

If we use the 'back' button, it calls the finish(), so each activity's onDestroy() gets called.

But, if we close the app(by pushing the 'overview' button and then swipe the app out),

only the Activity1's onDestroy() gets called.

  1. Why the onDestroy() of other activities are not called?
  2. Does it mean that other activities are alive until the system kills them? (If the system has enough resources, they are not destroyed?)

Solution

  • Ideally when you force close the App from overview, it kills the entire app process and all the activities are destroyed, and your activity stack root's(which is ActivityA) onDestroy method is called and for other activities the method won't be triggered but the stack itself gets destroyed along with the process. Nothing will be alive once the process is destroyed.