2022年3月9日 星期三

Android Studio - Activity 生命週期(Activity Lifecycle)介紹(六十)

Android Studio - Activity 生命週期(Activity Lifecycle)介紹(六十):

Android Activity(活動)生命週期會按照如下順序回檔,onCreate → onStart → onResume → onPause → onStop → onDestroy。稱之為 Entire Lifetime 整個生命週期。

Android Activity 生命週期(Lifecycle)

Android Activity 的生命週期主要有七個方法,分別是:
  • onCreate():分配資源給這個 Activity,用來做初始化的動作,物件的宣告與設置都是在此撰寫。
  • onStart():將 Activity 內容顯示到螢幕上。即獲得焦點時,會調用,Activity 處於棧頂。
  • onResume():取得螢幕的控制權,在這個階段,用戶才能與 Activity 交互時調用。同時,若開發者想要取得物件的長度、寬度等等屬性,也可以在此取得,尤其適用於啟動音訊、視頻和動畫。
  • onPause():凍結原本的 Activity,再交出直接存取螢幕能力。
  • onStop():Activity 的運作完全停止,失去焦點時調用。
  • onDestroy():銷毀 Activity,釋放出資源。這是 Activity 能收到的最後一個調用。調用的原因可能是別人在這個 activity 上調用了 finish(),也可能是系統為了更多的記憶體空間而把它所在的進程處死了。在這個方法中,可以調用 isFinishing() 來判斷自己屬於哪一種死法。
  • onRestart():將凍結和銷毀的 Activity,資源重新啟動 Activity 時調用。
Android Activity 週期:

// Activity剛被創建時

public static final int ON_CREATE = 1;

// 執行完轉到前台的最後準備工作

public static final int ON_START = 2;

// 執行完即將與用戶交互的最後準備工作

// 此時該activity位於前台

public static final int ON_RESUME = 3;

// 用戶離開,activity進入後台

public static final int ON_PAUSE = 4;

// activity不可見

public static final int ON_STOP = 5;

// 執行完被銷毀前最後的準備工作

public static final int ON_DESTROY = 6;

// 重新啟動執行工作

public static final int ON_Restart= 7;


Android Activity 範例:

public class Activity extends AppCompatActivity {

 

    private static final String TAG = "Activity";

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity);

        Toast.makeText(this, "onCreate Activity", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "onCreate Activity");

    }

 

    @Override

    protected void onStart() {

        super.onStart();

        Toast.makeText(this, "onStart Activity", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "onStart Activity");

    }

 

    @Override

    protected void onResume() {

        super.onResume();

        Toast.makeText(this, "onResume Activity", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "onResume Activity");

    }

 

    @Override

    protected void onPause() {

        super.onPause();

        Toast.makeText(this, "onPause Activity", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "onPause Activity");

    }

 

    @Override

    protected void onStop() {

        super.onStop();

        Toast.makeText(this, "onStop Activity", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "onStop Activity");

    }

 

    @Override

    protected void onDestroy() {

        super.onDestroy();

        Toast.makeText(this, "onDestroy Activity", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "onDestroy Activity");

    }

 

    @Override

    protected void onRestart() {

        super.onRestart();

        Toast.makeText(this, "onRestart Activity", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "onRestart Activity");

    }

}


2022年 3月 9日(Wed)天氣報告
氣溫:37.0°F / 3.0°C @ 07:00
風速:每小時 6公里
降雨機會:2%
相對濕度:百分之 85%
天氣:多雲時陰

沒有留言:

張貼留言