android系列5.Activity学习
Activity生命周期见图:
Method | Description | Killable after? | Next | ||
---|---|---|---|---|---|
|
Called when the activity is first created. This is where you should do all of your normal static set up — create views, bind data to lists, and so on. This method is passed a Bundle object containing the activity's previous state, if that state was captured (see Saving Activity State, later).
Always followed by |
No | onStart() |
||
|
Called after the activity has been stopped, just prior to it being started again.
Always followed by |
No | onStart() |
||
|
Called just before the activity becomes visible to the user.
Followed by |
No | onResume() or onStop() |
||
|
Called just before the activity starts interacting with the user. At this point the activity is at the top of the activity stack, with user input going to it.
Always followed by |
No | onPause() |
||
|
Called when the system is about to start resuming another activity. This method is typically used to commit unsaved changes to persistent data, stop animations and other things that may be consuming CPU, and so on. It should do whatever it does very quickly, because the next activity will not be resumed until it returns.
Followed either by |
Yes | onResume() or onStop() |
||
|
Called when the activity is no longer visible to the user. This may happen because it is being destroyed, or because another activity (either an existing one or a new one) has been resumed and is covering it.
Followed either by |
Yes | onRestart() or onDestroy() |
||
|
Called before the activity is destroyed. This is the final call that the activity will receive. It could be called either because the activity is finishing (someone called on it), or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenarios with the method. |
Yes | nothing |
The column labeled "Killable after?" indicates whether or not the system can kill the process hosting the activity at any time after the method returns, without executing another line of the activity's code. Three methods are marked "yes": (onPause()
, onStop()
, and onDestroy()
). Because onPause()
is the first of the three, once the activity is created, onPause()
is the last method that's guaranteed to be called before the process can be killed—if the system must recover memory in an emergency, then onStop()
and onDestroy()
might not be called. Therefore, you should use onPause()
to write crucial persistent data (such as user edits) to storage. However, you should be selective about what information must be retained during onPause()
, because any blocking procedures in this method block the transition to the next activity and slow the user experience.
Methods that are marked "No" in the Killable column protect the process hosting the activity from being killed from the moment they are called. Thus, an activity is killable from the time onPause()
returns to the time onResume()
is called. It will not again be killable until onPause()
is again called and returns.
Note: An activity that's not technically "killable" by this definition in table 1 might still be killed by the system—but that would happen only in extreme circumstances when there is no other recourse. When an activity might be killed is discussed more in the Processes and Threading document.
Figure 2. The two ways in which an activity returns to user focus with its state intact: either the activity is stopped, then resumed and the activity state remains intact (left), or the activity is destroyed, then recreated and the activity must restore the previous activity state (right).