Most host activity methods are fragmented.
onRestart () is called when your activity is on the back stack and you press the back button, so there is no need to recreate it (it just restarts).
Some methods do not exist in the Fragment (for example, onRestart (), onRestoreInstanceState (), they do not know why). Therefore, the restart occurs on the host and it calls Fragment onStart (), onResume (), just think that it is rebooting with Activity.
Another story with attachment and detachment. In some callback, you want to work safely with the view tree, and onActivityCreated () is a good candidate, so it does not restart.
I assume that Fragment does not have onRestart (), because the developer can control the back stack, and you can save the fragments (which you should not put on the back stack).
The best proof is code. Try playing with logging. Some time ago I did it myself , because Steve's project only checks one fragment.
Put forward a small mode (run ActivityWithDynamicFragments, then press the back button), and here is the log:
176448881: DynamicFragment.<init> / ctor 176448881: DynamicFragment.onAttach / in base with context 176448881: DynamicFragment.onAttach / in base with activity 176448881: DynamicFragment.onAttach / out base with activity 176448881: DynamicFragment.onAttach / out base with context 176448881: DynamicFragment.onCreate / in base 176448881: DynamicFragment.onCreate / out base 176448881: DynamicFragment.onCreateView / in brand new 176448881: DynamicFragment.onCreateView / out 176448881: DynamicFragment.onViewCreated / in base 176448881: DynamicFragment.onViewCreated / out base 176448881: DynamicFragment.onActivityCreated / in base 176448881: DynamicFragment.onActivityCreated / out base 176448881: DynamicFragment.onViewStateRestored / in base 176448881: DynamicFragment.onViewStateRestored / out base 176448881: DynamicFragment.onStart / in base 176448881: DynamicFragment.onStart / out base 176448881: DynamicFragment.onResume / in base 176448881: DynamicFragment.onResume / out base 176448881: DynamicFragment.onPause / in base 176448881: DynamicFragment.onPause / out base 227303269: ActivityWithDynamicFragments.onCreate / in brand new 227303269: ActivityWithDynamicFragments.onCreate / in base 227303269: ActivityWithDynamicFragments.onCreate / out base 227303269: ActivityWithDynamicFragments.onCreate / after super 227303269: ActivityWithDynamicFragments.onContentChanged / in base 227303269: ActivityWithDynamicFragments.onContentChanged / out base 227303269: ActivityWithDynamicFragments.onStart / in base 227303269: ActivityWithDynamicFragments.onStart / out base 227303269: ActivityWithDynamicFragments.onResume / in base 227303269: ActivityWithDynamicFragments.onResume / out base 227303269: ActivityWithDynamicFragments.onPostResume / in base 227303269: ActivityWithDynamicFragments.onResumeFragments / in base 227303269: ActivityWithDynamicFragments.onResumeFragments / out base 227303269: ActivityWithDynamicFragments.onPostResume / out base 227303269: ActivityWithDynamicFragments.onAttachedToWindow / in base 227303269: ActivityWithDynamicFragments.onAttachedToWindow / out base 176448881: DynamicFragment.onSaveInstanceState / in base 176448881: DynamicFragment.onSaveInstanceState / out base 176448881: DynamicFragment.onStop / in base 176448881: DynamicFragment.onStop / out base 227303269: ActivityWithDynamicFragments.onPause / in base 227303269: ActivityWithDynamicFragments.onPause / out base D/NSA: onRestart 176448881: DynamicFragment.onStart / in base 176448881: DynamicFragment.onStart / out base 176448881: DynamicFragment.onResume / in base 176448881: DynamicFragment.onResume / out base 227303269: ActivityWithDynamicFragments.onStop / in base 227303269: ActivityWithDynamicFragments.onStop / out base 227303269: ActivityWithDynamicFragments.onDestroy / in base 227303269: ActivityWithDynamicFragments.onDestroy / out base
We have two types of rest and reboot.
Rest occurs only with the modification (even with the potential when Fragment without UI) of the viewing tree.
A restart occurs when your view tree is stable (for example, your activity with a fragment in the background stack and you want to return it).
Can Android decide to remove invisible fragments, but keep the activity that holds them back?
I believe that the only controlled quantum for killing Android OS is the process (but it is debatable ).
As for Fragment, you can check the source code of FragmentActivity and FragmentManager (I don't see such a stream).