前言
对于开发Android的朋友来说Activity的生命周期肯定不陌生,但是对于Dialog的生命周期就会有点困惑了,可能会问咋个Dialog还有生命周期呢?没错,Dialog不仅有生命周期而且会与Activity有密切的关联。相信用过Dialog的朋友肯定记得如何让Dialog消失的方法:就是调用dialog.cancle 或 dialog.dismiss()方法。OK,那么,下面我们先看一下Dialog 的六个生命周期。
一、Dialog生命周期
- onCreate(),show(),onStart() ,cancel(),onDismiss(),Stop()
是不是看着很眼熟,当在对话框创建onCreate()后(仅执行一次创建),show()方法用于展示对话框,随后调用onStart(),当点击back键或点击外部会执行cancel(),如果调用dialog.dismiss()方法会执行onDismiss,对话框消失最后会执行Stop()。
二、Activity上有Dialog的时候的生命周期
Android 深刻理解Activity生命周期的作用及意义
有些朋友可能会认为Activity被覆盖会处于onPause的生命周期,完全不可见即将销毁则处于onStop状态, 但是弹出Dialog覆盖时会不会这样呢?很简单的做个试验: 点击按钮弹出一个Dialog, 这时后面的Activity处于不完全可见的状态, 打印出Activity生命周期的变化。
public class MainActivity extends AppCompatActivity {
private Button button;
private String TAG = "MainActivity";
public void init(){
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setIcon(R.mipmap.ic_launcher_round)
.setCancelable(false)
.setTitle("dialog")
.show();
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
protected void onStart(){