中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

簡析Activity生命周期

發布時間:2020-03-24 18:28:59 來源:網絡 閱讀:550 作者:Cindere_liuqiqi 欄目:開發技術

   Activity和所有的生物一樣,也有生老病死這一說,這就是我們將要了解的Activity生命周期的概念。

   一:生命周期

   Activity的生命周期如下圖所示:


簡析Activity生命周期

   Activity的生命周期分為四個階段

   (1)運行態:

   應用程序啟動之后,若Activity處于屏幕的最前端,可以與用戶進行交互的界面,我們說其具有運行態。一個Activity從創建到運行態,需要經歷onCreate-->onStart-->onResume三個階段

   (2)暫停態:

   Activity被置于后臺,但是用戶仍然可見,失去焦點,只是暫時不能進行交互,調用onPause()進入暫停態。進入暫停態的Activity,若想重新回到運行態,需要調用onResume()方法

   (3)停止態:

   Activity被置于后臺,完全被其他Activity擋住,失去焦點,不能交互,調用onStop()進入停止態。若想重新回到運行態,需經過onRestart()-->onStart()-->onResume()三個階段,此時應注意實行onRestart方法之后程序進入到的是onStart而不是onCreate。也就是說:onCreate()方法,只被執行一次,onResume()無論在什么狀態均需要執行,onStart()旨在創建和onestart()之后執行一次。

   (4)終止態:

   Activity被終止,比如點擊“返回”鍵之后,將結束程序的執行,調用onDestory()方法,進入到終止態。若想重新回到運行態,需重新定義Activity。

   二:作用

   清晰的區分Activity的生命周期,在以后的編程操作中,我們可以清晰的知道哪些操作應該在哪些狀態下運行。比如某功能,要求用戶第一次登陸時要注冊,在此登陸的時候則直接跳入,這樣的功能我們應該在onCreate方法中是實現,因為onCreate在應用程序的執行中,只運行一次。

   三:生命周期的調用時機

   1:調用時機

    這六個方法,不需要用戶手動調用,由系統自動調用。然而不同的方法調用的時機卻不相同。

   測試方法:創建工程,在主界面中,重寫六個方法,添加輸出語句,執行程序,按上述幾種狀態,分別測試程序,看后臺輸出即可驗證結果。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("onCreate");
    }
    @Override
    protected void onStart() {
        super.onStart();
        System.out.println("onStart");
    }
    @Override
    protected void onResume() {
        super.onResume();
        System.out.println("onResume");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        System.out.println("onRestart");
    }
    @Override
    protected void onPause() {
        super.onPause();
        System.out.println("onPause");
    }
    @Override
    protected void onStop() {
        super.onStop();
        System.out.println("onStop");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        System.out.println("onDestory");
    }
}

   測試結果:  

     ①程Activity動,自動依次進入onCreate-->onStart-->onResume三個狀態

     ②按home鍵,Activity全被擋住,依次進入到onPause-->onStop兩個狀態

     ③按返回鍵,終止程序執行,依次進入到onPause-->onStop-->onDestory狀態

     ④長按home鍵,重新執行程序,依次進入到onRestart-->onStart-->onResume三個狀態

 2: 思考

   單擊A頁面按鈕實現從頁面A到頁面B的跳轉,此時兩個Activity處于生命周期的什么狀態下呢?

   解決辦法:

  (1) 創建工程,編寫自定義Act2,在Act2中添加如上代碼

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act2);
    System.out.println("2----onCreate");
}
@Override
protected void onStart() {
    super.onStart();
    System.out.println("2----onStart");
}
@Override
protected void onResume() {
    super.onResume();
    System.out.println("2----onResume");
}
@Override
protected void onRestart() {
    super.onRestart();
    System.out.println("2----onRestart");
}
@Override
protected void onPause() {
    super.onPause();
    System.out.println("2----onPause");
}
@Override
protected void onStop() {
    super.onStop();
    System.out.println("2----onStop");
}
@Override
protected void onDestroy() {
    super.onDestroy();
    System.out.println("2----onDestory");
}

   (2)在主界面上,添加跳轉的實現及其他生命周期方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    System.out.println("1----onCreate");
    findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
                                                   
        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(MainActivity.this,Act2.class);
            startActivity(i);              
        }
    });
}
@Override
protected void onStart() {
    super.onStart();
    System.out.println("1----onStart");
}
@Override
protected void onResume() {
    super.onResume();
    System.out.println("1----onResume");
}
@Override
protected void onRestart() {
    super.onRestart();
    System.out.println("1----onRestart");
}
@Override
protected void onPause() {
    super.onPause();
    System.out.println("1----onPause");
}
@Override
protected void onStop() {
    super.onStop();
    System.out.println("1----onStop");
}
@Override
protected void onDestroy() {
    super.onDestroy();
    System.out.println("1----onDestory");
}

   (3)運行工程,點擊按鈕,觀看控制臺,結果如下:

08-20 13:46:26.842: I/System.out(279): 1----onPause
08-20 13:46:26.875: I/System.out(279): 2----onCreate
08-20 13:46:26.875: I/System.out(279): 2----onStart
08-20 13:46:26.875: I/System.out(279): 2----onResume
08-20 13:46:27.212: I/System.out(279): 1----onStop

  答案:由于此時A界面正在被B界面覆蓋,所以A界面先進入到onpause狀態,隨后B界面啟動,進入onCreate-->onStart-->onResume三個狀態,之后A界面被完全擋住,A界面到達onStop狀態。

   Activity生命周期十分重要,要重點掌握,以后我們會經常用到的,注意產生時機與作用,注意區別哦。。簡析Activity生命周期


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邯郸县| 班玛县| 墨江| 高淳县| 成安县| 香港| 西安市| 新龙县| 郯城县| 礼泉县| 通化市| 铜梁县| 井陉县| 桦甸市| 桃江县| 武宣县| 威信县| 边坝县| 九寨沟县| 龙陵县| 云南省| 阳东县| 巫溪县| 连江县| 林甸县| 大姚县| 中方县| 磴口县| 和田县| 兖州市| 龙川县| 通州区| 化州市| 时尚| 乐业县| 宁河县| 厦门市| 永仁县| 阜城县| 蚌埠市| 会理县|