当前位置 博文首页 > 庆述倾述:AlertDialog、ProgressDialog显示不会触发Activity的o
今天偶然看见一句话:
AlertDialog其实是Activity的一个组件,在显示对话框的时候,并没有出现onPause的调用。
也就是说对于AlertDialog
存在一些迷惑行为?
在我们的认知中当Activity不可触摸的时候,就会调用onPause,不可见的时候就会触发onDestory。这里显然和认知略微有点差异。这里不妨试一下。
在TestActivity.java
中复写各个生命周期方法,然后在xml
布局中添加一个按钮,并为这个按钮添加显示AlertDialog
的回调函数:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dialog = new AlertDialog.Builder(TestActivity.this);
dialog.setTitle("This is Dialog.");
dialog.setMessage("This is a message.");
dialog.setCancelable(true);
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();
}
});
测试发现,确实如果不返回,只会调用如下:
不会调用onPause
。
那么也就是说这个AlertDialog
其实是当前Activity
的一部分。当对话框弹出并不是这个Activity
不可见,而是显示了组件。
类似的还有ProgressDialog
:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ProgressDialog dialog = new ProgressDialog(TestActivity.this);
dialog.setTitle("This is Dialog.");
dialog.setMessage("This is a message.");
dialog.setCancelable(true);
dialog.show();
}
});
cs