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()");
}
}