Android四大組件-Activity

Activity是Android最常用最基本的四大組件之一,Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互完成某項操作。
Activity中的所有操作都跟用戶有關係,是一個跟用戶交互的組件,可以通過SetContentView(View)來顯示指定控件。
  1. Activity生命週期
    Acivity一共有七個生命週期:
    這裏寫圖片描述
    一般簡單的生命週期:onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()
    啓動Activity:onCreate()->onStart()->onResume()
    當前Activity被覆蓋:onPause()
    當Activity由覆蓋回到前臺:onResume()
    當Activity轉到新的Activity界面:onPause()->onStop()
    ->onDestory()
    用戶後退到此Activity:onRestart()->onStart()->onResume()
package com.appress.gerber.myapplication;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "LifeCycleActivity";
    private Context mContext = this;
    private int param = 1;

    //Activity創建時被調用
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG,"onCreated");
        setContentView(R.layout.activity_main);
        Button btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext,TargetActivity.class);
                startActivity(intent);
            }
        });
    }

    //Activity創建或從後臺重新回到前臺被調用
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG,"onStart");
    }

    //Activity從後臺重新回到前臺時被調用
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG,"onRestart");
    }

    //Activity創建或者從覆蓋、後臺回到前臺被調用
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG,"onResume");
    }

    //被覆蓋到下面或者被鎖屏
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG,"onPause");
    }

    //退出當前Activity或者跳轉到新的Activity
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG,"onStop");
    }

    //退出當前Activity,調用之後Activity就結束了
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG,"onDestory");
    }
    /**
     * Activity被系統殺死之後調用
     * 屏幕方向改變時,Activity被銷燬在重建;
     * 在onPause之前使用
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putInt("param",param);
        Log.i(TAG,"onSaveInstanceState:"+ param);
        super.onSaveInstanceState(outState);
    }
    /**
     *Activity被系統殺死後又被重新創建
     *屏幕方向改變時,Activity被銷燬再重建;
     * 在onStart之後
     */
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        param = savedInstanceState.getInt("param");
        Log.i(TAG,"onRestoreInstanceState" + param);
        super.onRestoreInstanceState(savedInstanceState);
    }
}

結果:
1. 啓動Activity:
這裏寫圖片描述
2. 跳轉到其他頁面(Home鍵退回):
這裏寫圖片描述
3. 從其他頁面返回(從後臺到前臺):
這裏寫圖片描述
4. 銷燬Activity
這裏寫圖片描述
5. 橫豎屏切換
這裏寫圖片描述
在做橫豎屏切換時,onSaveInstanceState保存了臨時數據,切換完畢後onRestoreInstanceState取出剛剛保存的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章