fragment lifecycle: when "ondestroy" and "ondestroyview" are not called?
Asked Answered
A

1

37

Imagine this scenario: I have a Fragment in a Pager. I try to switch to other apps, so that the Activity owning my pager (and my fragment) will be stopped and temporarily destroyed, eventually.

So, when I come back to my Activity, the Fragment's callbacks onCreate, oncreateview and so forth are called. But none of the Fragment's onDestroy callbacks were called before! It seems that after "onStop" the fragment is destroyed at once. Is it a normal behavior? Is it maybe because the Activity is destroyed without a call to its onDestroy?

Alexaalexander answered 19/6, 2013 at 15:46 Comment(2)
I would need a call to a onDestroy or onDestroyView on the Fragment because I have a nested fragment in it that I would like to remove in order to be recreated when onCreateView is called backAlexaalexander
Related post - Activity's onDestroy / Fragment's onDestroyView set Null practices & Why implement onDestroy() if it is not guaranteed to be called?Guerrilla
W
45

Take a look at this question: Why implement onDestroy() if it is not guaranteed to be called?

Basically, onDestroy() is only guaranteed to be called if you call finish(). Otherwise, onDestroy() may not be called until the system deems it necessary. You might want to look at putting your "closing" logic in the onPause() or onStop() instead.

Wier answered 19/6, 2013 at 15:54 Comment(1)
Thanks for the link! I was already aware of it, but I was still wondering if the Fragment's onDestroy wasn't called because of that. So, you're confirming that the Fragment's onDestroy is not called because its Activity's onDestroy is not called either. Did I get right?Alexaalexander

© 2022 - 2024 — McMap. All rights reserved.