一、Activity生命周期的四个状态
- 运行状态
处于可见并可和用户交互的状态 - 暂停状态
一个Activity被另外一个透明Activity或Dialog的Activity覆盖,但是任然可见,失去与用户交互的能力 - 停止状态
一个Activity被另外一个透明Activity或Dialog的Activity完全覆盖,依然保持所有的状态和成员信息,但是不可见 - 断开状态
Activity被系统杀死回收或者没有启动
二、Activity生命周期的七个方法
- onCreate
- onStart
- onResume
- onPause
- onStop
- onDestroy
- onRestart
三、生命周期的实例
主要代码内容是重写七个方法(两个Activity中均按照下面代码重写七个方法)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show__image);
System.out.println("ShowImage_onCreate");
}
@Override
public void onStart()
{
super.onStart();
System.out.println("ShowImage_onStart");
}
public void onRestart()
{
super.onRestart();
System.out.println("ShowImage_onRestart");
}
public void onResume()
{
super.onResume();
System.out.println("ShowImage_onResume");
}
public void onPause()
{
super.onPause();
System.out.println("ShowImage_onPause");
}
public void onStop()
{
super.onStop();
System.out.println("ShowImage_onStop");
}
public void onDestroy()
{
super.onDestroy();
System.out.println("ShowImage_onDestroy");
}
1.一个Activity中启动另外一个Activity(完全覆盖)
跳转到另外一个Activity代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button btn_image;
@SuppressLint("WrongViewCast")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_image=findViewById(R.id.imageshow);
btn_image.setOnClickListener(this);
System.out.println("MainActivity_onCreate");
}
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.setAction("openimage");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
}
}
运行结果
打开APP
打开另外一个Activity
退出新Activity和APP
2. 一个Activity中启动另外一个Activity(非完全覆盖)
上面代码基础上做出下面修改
运行结果
打开APP
打开另外一个Activity
关闭新Activity和APP
3.横竖屏切换
不做修改
打开APP
横屏变竖屏
修改内容
运行结果
添加修改后,横竖屏切换Activity并没有调用七个方法中的任何一个。
四、一个Activity的生命周期流程
通过上面的实例,可以得出下面的流程
整体来看,Activity的生命周期的变化主要是对七个方法的调用,实现状态的变化。