问题
I have an app with two activities: "A" and "B".
"A" uses startActivityForResult()
to spawn "B" i.e. it waits for "B". Now, assume that "B" is in foreground. Can the Android system destroy activity "A" without also destroying "B"? (If yes, then when "B"is finished e.g. after user input, activity "A" must be recreated and put to the foreground again by the Android system, and I need to remember and restore "A" to its earlier UI status.)
Note that I'm not talking about process kill (which is different case: if a process is killed, all activities are killed and onDestroy() is not called or not guaranteed to be called). The question is merely about whether onDestroy() is possible while waiting for the result of a subactivity.
回答1:
If Activity A gets killed by the time B finishes, you are guaranteed that
- A will be re-created.
- A will deliver the result.
In other words, A will be re-created the next time the user visits/needs it, and at that point any pending results will be delivered (from B to A).
Also note that this is why results must be returned through a single Activity callback with an integer request code, instead of an arbitrary callback object.
来源:https://stackoverflow.com/questions/10319330/ondestroy-while-waiting-for-onactivityresult