*活动的生存期
onCreate() 活动第一次被创建的时候调用
onStart()活动由不可见到可见
onResume()活动准备好和用户进行交互,活动位于返回栈的栈顶
onPause()系统准备去启动或者恢复另一个活动时候
onStop()活动完全不可见时调用
onDestroy()活动由停止状态变为运行状态
onRestart()活动由停止状态变为运行状态
*体验活动的生命周期
创建新的项目-创建两个子活动,一个叫NormalActivity,一个叫DialogActivity
在NormalActivity中:
扫描二维码关注公众号,回复:
2142922 查看本文章
<TextView
android:text="This is a normal activity"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
在DialogActivity中:(对话框)
<TextView
android:text="This is a dialog activity"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
在AndroidManifest中:(Dialog是对话框)
<activity
android:theme="@style/Theme.AppCompat.Dialog"
android:name=".DialogActivity">
</activity>
在activity_main.xml中:
<Button
android:id="@+id/button1"
android:text="normal"
android:layout_gravity="center"
android:layout_width="120dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button2"
android:text="dialog"
android:layout_gravity="center"
android:layout_width="120dp"
android:layout_height="wrap_content" />
在MainActivity中:
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"onCreate");
setContentView(R.layout.activity_main);
Button button1 = findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,DialogActivity.class);
startActivity(intent);
}
});
Button button = findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,NormalActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onStart(){
super.onStart();
Log.d(TAG,"onStart");
}
@Override
protected void onResume(){
super.onResume();
Log.d(TAG,"onResume");
}
@Override
protected void onPause(){
super.onPause();
Log.d(TAG,"onPause");
}
@Override
protected void onStop(){
super.onStop();
Log.d(TAG,"onStop");
}
@Override
protected void onDestroy(){
super.onDestroy();
Log.d(TAG,"onDestroy");
}
@Override
protected void onRestart(){
super.onRestart();
Log.d(TAG,"onRestart");
}
}
观察logcat中打印日志可以看到
Mainactivity第一次被创建时onCreate(),onStart(),onResume()方法;
点击第一个按钮时onPause(),onStop(),由此看出NormalActivity已经把MainActivity完全遮挡住
按BACK键返回时会有onStart(),onResume();
再点击第二个按钮,会有onPause(),没有调用onStop是因为DialogActivity并没有完全遮挡住Mainactivity,MainActivity只是进入了暂停状态
Back键会执行onResume
最后在MainActivity中按back键会执行onPause(),onStop,onDestroy(),最终销毁MainActivity