Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android的生命周期

Android的生命周期

編輯:關於Android編程

  1. Activity的生命周期圖

    /

    2 Android生命周期中涉及到的幾個過程

    1.啟動Activity:系統會先調用onCreate方法,然後調用onStart方法,最後調用onResume,Activity進入運行狀態。

    2. 當前Activity被其他Activity覆蓋其上或被鎖屏,系統會調用onPause方法,暫停當前Activity的執行。

    3.當前Activity由被覆蓋狀態回到前台或解鎖鎖屏:系統會調用onResume方法,再次進入運行狀態。

    4.當前Activity轉到的Activity界面或按Home鍵回到主屏,自身退居後台:系統會先調用onPause方法,然後調用onStop方法。進入停滯狀態。

    5.用戶後退回到此Activity:系統會先後調用onRestart方法,然後調用onStart方法,最後調用onResume方法,再次進入運行狀態。

    6.當前Activity處於被覆蓋狀態或者後台不可見狀態,即第2步和第4步,系統內存不足,殺死當前Activity,而後用戶退回當前Activity,再次調用onCreate方法、onStart方法、onResume方法,進入運行狀態。

    7.當用戶退出當前Activity:系統先調用onPause方法,然後調用onStop方法,最後調用onDestory方法,結束當前Activity.

    3.編寫如下程序進行測試

    /

    4 Android清單文件如下:

    1.0 encoding=utf-8?>

    http://schemas.android.com/apk/res/android

    package=com.itheima.lifecycle

    android:versionCode=1

    android:versionName=1.0 >

     

    android:minSdkVersion=8

    android:targetSdkVersion=19 />

     

    android:allowBackup=true

    android:icon=@drawable/ic_launcher

    android:label=@string/app_name

    android:theme=@style/AppTheme >

    android:name=com.itheima.lifecycle.MainActivity

    android:label=@string/app_name >

    android.intent.action.MAIN />

     

    android.intent.category.LAUNCHER />

     

     

    android:theme=@android:style/Theme.Translucent

    android:name=com.itheima.lifecycle.SecondActivity>

     

     

     

     

    5 布局文件activity_main.xml

    http://schemas.android.com/apk/res/android

    xmlns:tools=http://schemas.android.com/tools

    android:layout_width=match_parent

    android:layout_height=match_parent

    tools:context=.MainActivity >

     

    布局文件:activity_second.xml

    xmlns:android=http://schemas.android.com/apk/res/android

    xmlns:tools=http://schemas.android.com/tools

    android:layout_width=match_parent

    android:layout_height=match_parent

    tools:context=.SecondActivity >

     

    android:layout_width=wrap_content

    android:layout_height=wrap_content

    android:layout_centerHorizontal=true

    android:layout_centerVertical=true

    android:text=我是第二個界面/>

     

     

    6 MainActivity的代碼如下:

    package com.itheima.lifecycle;

     

    import android.content.Intent;

    import android.os.Bundle;

    import android.support.v7.app.ActionBarActivity;

    import android.view.View;

     

    public class MainActivity extends ActionBarActivity {

     

    /**

    * 被創建的時候調用的方法

    */

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

     

    System.out.println(oncreate);

    }

     

    /**

    * 被銷毀的時候調用的方法

    */

    @Override

    protected void onDestroy() {

    System.out.println(onDestroy);

    super.onDestroy();

    }

     

    /**

    * 當activity界面可見的時候調用的方法

    * Activity創建或者從後台重新回到前台時候被調用

    */

    @Override

    protected void onStart() {

    System.out.println(onStart);

    super.onStart();

    }

     

    /**

    * Activity從後台重新回到前台時被調用

    */

    protected void onRestart() {

    System.out.println(onstart);

    super.onRestart();

    }

     

    /**

    * 當activity界面用戶不可見的時候調用的方法

    */

    @Override

    protected void onStop() {

    System.out.println(onStop);

    super.onStop();

    }

     

    /**

    * 界面開始獲取到焦點對應的方法。

    * (界面按鈕可以被點擊,文本框可以輸入內容)

    *

    * Activity創建或者從被覆蓋、後台重新回到前台時被調用

    */

    @Override

    protected void onResume() {

    System.out.println(onresume);

    super.onResume();

    }

     

    /**

    * 界面失去焦點對應的方法(暫停)

    * (按鈕不可被點擊,文本框不可,但是界面輸入內容,用戶仍然能看見)

    */

    @Override

    protected void onPause() {

    System.out.println(onpause);

    super.onPause();

    //可能在執行完onPause或onStop後,系統資源緊張將Activity殺死,所以有

    //必要在此保存持久數據

    }

     

    /**

    * 窗口獲得或失去焦點是被調用,在onResume之後或onPause之後

    */

    public void onWindowFocusChanged(boolean hasFocus) {

    System.out.println(onWindowFocusChanged);

    super.onWindowFocusChanged(hasFocus);

    }

     

    /**

    * Activity被系統殺死是被調用。

    * 例如:屏幕方向改變時,Activity被銷毀在重建;當前Activity處於後台,系統資源

    * 緊張將其殺死。

    * 另外,當跳轉到其他Activity或者按Home鍵回到主屏是該方法也被調用,系統為了保存

    * 當前View組件,在onPause之後前被調用。

    */

    protected void onSaveInstanceState(Bundle outState) {

    System.out.println(onSaveInstanceState);

    super.onSaveInstanceState(outState);

    }

     

    /**

    * Activity被系統殺死後再重建時被調用

    * 例如:屏幕方向改變時,Activity被銷毀在重建,當前Activity處於後台,系統

    * 資源緊張將其殺死,用戶又啟動該Activity,這兩種情況下onRestoreInstanceState

    * 都被調用,在onStart之後。

    */

    protected void onRestoreInstanceState(Bundle savedInstanceState) {

    System.out.println(onRestoreInstanceState);

    super.onRestoreInstanceState(savedInstanceState);

    }

     

    public void click(View view) {

    Intent intent = new Intent(this,SecondActivity.class);

    startActivity(intent);

    }

    }

    7 SecondActivity的內容如下:

    package com.itheima.lifecycle;

     

    import android.app.Activity;

    import android.os.Bundle;

     

    public class SecondActivity extends Activity {

     

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_second);

    }

    }

     

     

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved