Android:week 9總結 Activity生命週期

Monday:Activity生命週期

 

1.

package com.example.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {  //此方法必須實現
        super.onCreate(savedInstanceState);        //調用父類的方法   savedInstanceState:保存Activity上一次運行的信息 (除了Destroy)
        setContentView(R.layout.activity_main);
        Log.d("MainActivity", "onCreate()");
    }
    protected void onStart() {
        super.onStart();
        Log.d("MainActivity", "onStart()");
    }
    protected void onResume() {        //確定哪一個Activity被使用
        super.onResume();
        Log.d("MainActivity", "onResume()");
    }
    protected void onPause() {
        super.onPause();
        Log.d("MainActivity", "onPause()");
    }
    protected void onStop() {
        super.onStop();
        Log.d("MainActivity", "onStop()");
    }
    protected void onDestroy() {
        super.onDestroy();
        Log.d("MainActivity", "onDestroy()");
    }
}

(1)啓動虛擬器時,通過Run可以看到,程序使用了以下方法:

D/MainActivity: onCreate()       //創建
D/MainActivity: onStart()          //啓動
D/MainActivity: onResume()    //獲取焦點

(2)使用屏幕下方中間的按鍵時,使用以下方法:

D/MainActivity: onPause()      //暫停
D/MainActivity: onStop()        //停止

(3)使用屏幕下方的左鍵關閉時,使用以下方法:

D/MainActivity: onPause()      //暫停

D/MainActivity: onStop()       //停止
D/MainActivity: onDestroy()  //銷燬

(4)屏幕旋轉,使用以下方法:

D/MainActivity: onPause()
D/MainActivity: onStop()
D/MainActivity: onDestroy()
D/MainActivity: onCreate()
D/MainActivity: onStart()
D/MainActivity: onResume() 

 

2.

 public void click(View view){
        count++;
        Log.d("MainActivity", "click: "+count);
    }

當橫屏時會發現count的數據清零,無法保存。

D/MainActivity: click: 2
D/MainActivity: click: 3

D/MainActivity: onPause()
D/EGL_emulation: eglMakeCurrent: 0xa44840c0: ver 2 0 (tinfo 0xa4483140)
D/MainActivity: onStop()
D/MainActivity: onDestroy()
D/MainActivity: onCreate()
D/MainActivity: onStart()
D/MainActivity: onResume()
D/EGL_emulation: eglMakeCurrent: 0xa44840c0: ver 2 0 (tinfo 0xa4483140)
I/zygote: Do partial code cache collection, code=20KB, data=30KB
I/zygote: After code cache collection, code=20KB, data=30KB
    Increasing code cache capacity to 128KB
D/MainActivity: click: 1

若要保存需要定義一個鍵和鍵值(相當於Map)

package com.example.activity;

import androidx.appcompat.app.AppCompatActivity;
import android.widget.*;
import android.view.*;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    private int count=0;
    protected static final String MESSAGE="鍵的名稱";
    @Override
    protected void onCreate(Bundle savedInstanceState) {  //此方法必須實現
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState!=null){
            count=savedInstanceState.getInt(MESSAGE);
        }
        Log.d("MainActivity", "onCreate()"+count);
    }
    public void click(View view){
        count++;
        Log.d("MainActivity", "click: "+count);
    }
    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {  //當系統銷燬Activity時會調用,在onPause之後調用
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt(MESSAGE,count);
        Log.d("MainActivity", "onSavedInstanceState: "+count);
    }

    protected void onStart() {
        super.onStart();
        Log.d("MainActivity", "onStart()");
    }
    protected void onResume() {
        super.onResume();
        Log.d("MainActivity", "onResume()");
    }
    protected void onPause() {
        super.onPause();
        Log.d("MainActivity", "onPause()");
    }
    protected void onStop() {
        super.onStop();
        Log.d("MainActivity", "onStop()");
    }
    protected void onDestroy() {
        super.onDestroy();
        Log.d("MainActivity", "onDestroy()");
    }
}

 

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