<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    統(tǒng)計(jì)

    留言簿(1)

    DB

    Others

    QA

    Tech Website

    閱讀排行榜

    評(píng)論排行榜

    Activity Lifecycle

    Activities in the system are managed as an activity stack. When a new activity is started, it is placed on the top of the stack and becomes the running activity -- the previous activity always remains below it in the stack, and will not come to the foreground again until the new activity exits.

    An activity has essentially four states:

    • If an activity in the foreground of the screen (at the top of the stack), it is active or running.
    • If an activity has lost focus but is still visible (that is, a new non-full-sized or transparent activity has focus on top of your activity), it is paused. A paused activity is completely alive (it maintains all state and member information and remains attached to the window manager), but can be killed by the system in extreme low memory situations.
    • If an activity is completely obscured by another activity, it is stopped. It still retains all state and member information, however, it is no longer visible to the user so its window is hidden and it will often be killed by the system when memory is needed elsewhere.
    • If an activity is paused or stopped, the system can drop the activity from memory by either asking it to finish, or simply killing its process. When it is displayed again to the user, it must be completely restarted and restored to its previous state.

    The following diagram shows the important state paths of an Activity. The square rectangles represent callback methods you can implement to perform operations when the Activity moves between states. The colored ovals are major states the Activity can be in.

    State diagram for an Android Activity Lifecycle.

    There are three key loops you may be interested in monitoring within your activity:

    • The entire lifetime of an activity happens between the first call to onCreate(Bundle) through to a single final call to onDestroy(). An activity will do all setup of "global" state in onCreate(), and release all remaining resources in onDestroy(). For example, if it has a thread running in the background to download data from the network, it may create that thread in onCreate() and then stop the thread in onDestroy().
    • The visible lifetime of an activity happens between a call to onStart() until a corresponding call to onStop(). During this time the user can see the activity on-screen, though it may not be in the foreground and interacting with the user. Between these two methods you can maintain resources that are needed to show the activity to the user. For example, you can register a BroadcastReceiver in onStart() to monitor for changes that impact your UI, and unregister it in onStop() when the user an no longer see what you are displaying. The onStart() and onStop() methods can be called multiple times, as the activity becomes visible and hidden to the user.
    • The foreground lifetime of an activity happens between a call to onResume() until a corresponding call to onPause(). During this time the activity is in front of all other activities and interacting with the user. An activity can frequently go between the resumed and paused states -- for example when the device goes to sleep, when an activity result is delivered, when a new intent is delivered -- so the code in these methods should be fairly lightweight.

    The entire lifecycle of an activity is defined by the following Activity methods. All of these are hooks that you can override to do appropriate work when the activity changes state. All activities will implement onCreate(Bundle) to do their initial setup; many will also implement onPause() to commit changes to data and otherwise prepare to stop interacting with the user. You should always call up to your superclass when implementing these methods.

     

     public class Activity extends ApplicationContext {
    protected void onCreate(Bundle savedInstanceState);

    protected void onStart();

    protected void onRestart();

    protected void onResume();

    protected void onPause();

    protected void onStop();

    protected void onDestroy();
    }

    In general the movement through an activity's lifecycle looks like this:

    Method Description Killable? Next
    onCreate() 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, etc. This method also provides you with a Bundle containing the activity's previously frozen state, if there was one.

    Always followed by onStart().

    No onStart()
    onRestart() Called after your activity has been stopped, prior to it being started again.

    Always followed by onStart()

    No onStart()
    onStart() Called when the activity is becoming visible to the user.

    Followed by onResume() if the activity comes to the foreground, or onStop() if it becomes hidden.

    No onResume() or onStop()
    onResume() Called when the activity will start interacting with the user. At this point your activity is at the top of the activity stack, with user input going to it.

    Always followed by onPause().

    No onPause()
    onPause() Called when the system is about to start resuming a previous activity. This is typically used to commit unsaved changes to persistent data, stop animations and other things that may be consuming CPU, etc. Implementations of this method must be very quick because the next activity will not be resumed until this method returns.

    Followed by either onResume() if the activity returns back to the front, or onStop() if it becomes invisible to the user.

    Yes onResume() or
    onStop()
    onStop() Called when the activity is no longer visible to the user, because another activity has been resumed and is covering this one. This may happen either because a new activity is being started, an existing one is being brought in front of this one, or this one is being destroyed.

    Followed by either onRestart() if this activity is coming back to interact with the user, or onDestroy() if this activity is going away.

    Yes onRestart() or
    onDestroy()
    onDestroy() The final call you receive before your activity is destroyed. This can happen either because the activity is finishing (someone called finish() 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 isFinishing() method. Yes nothing

    Note the "Killable" column in the above table -- for those methods that are marked as being killable, after that method returns the process hosting the activity may killed by the system at any time without another line of its code being executed. Because of this, you should use the onPause() method to write any persistent data (such as user edits) to storage. In addition, the method onSaveInstanceState(Bundle) is called before placing the activity in such a background state, allowing you to save away any dynamic instance state in your activity into the given Bundle, to be later received in onCreate(Bundle) if the activity needs to be re-created. See the Process Lifecycle section for more information on how the lifecycle of a process is tied to the activities it is hosting. Note that it is important to save persistent data in onPause() instead of onSaveInstanceState(Bundle) because the later is not part of the lifecycle callbacks, so will not be called in every situation as described in its documentation.

    For those methods that are not marked as being killable, the activity's process will not be killed by the system starting from the time the method is called and continuing after it returns. Thus an activity is in the killable state, for example, between after onPause() to the start of onResume().

    posted on 2011-05-31 09:31 XXXXXX 閱讀(293) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Android Dev

    主站蜘蛛池模板: 中文无码日韩欧免费视频| 99久久这里只精品国产免费| 国产一级高清视频免费看| 精品日韩99亚洲的在线发布| 免费国产在线视频| 亚洲永久无码3D动漫一区| 国产综合成人亚洲区| 97无码免费人妻超级碰碰碰碰 | 亚洲色大成网站www| 在线免费观看你懂的| 亚洲AV成人无码久久精品老人| 亚洲第一视频在线观看免费| 亚洲av午夜成人片精品电影| 久久水蜜桃亚洲AV无码精品| 性感美女视频在线观看免费精品| 亚洲国产av高清无码| 曰批全过程免费视频网址| 91亚洲国产成人精品下载| 日韩精品免费视频| 亚洲国产成人片在线观看无码| 国产激情久久久久影院老熟女免费 | 老外毛片免费视频播放| 永久中文字幕免费视频网站| 亚洲精品无码专区| 在线a毛片免费视频观看| 亚洲欧洲AV无码专区| 免费黄网在线观看| 亚洲6080yy久久无码产自国产| 午夜男人一级毛片免费| 亚洲狠狠婷婷综合久久蜜芽| 暖暖免费高清日本一区二区三区| 亚洲精品无码av中文字幕| 欧洲美熟女乱又伦免费视频| 亚洲男人的天堂网站| 日韩a级毛片免费观看| 韩国亚洲伊人久久综合影院| 啊灬啊灬别停啊灬用力啊免费看| 国产AV无码专区亚洲AV琪琪| 亚洲美日韩Av中文字幕无码久久久妻妇| 人妻巨大乳hd免费看| 亚洲一区无码中文字幕|