我不太理解这句话。在什么情况下会发生这种情况?如果所讨论的对话框的上下文与要显示对话框的活动不同,那么是否只会调用一个活动可以经常在前台和后台之间切换,例如当设备进入睡眠状态或者出现对话框时会调用
onPause()
方法。
onPause()
方法?编辑:添加代码示例以详细说明我的疑问
根据上述文件中的引用,当以下代码中的
AlertDialog
(或只是Dialog
)被显示时,应该调用我的活动的onPause()
方法吗?当对话框被显示时,我应该看到“onPause called”日志条目吗?但我没有看到发生这种情况。如果我正确地理解了Android生命周期,它也不应该发生!那么,这份文件指的是什么呢?
public class LifeCycleTestActivity extends Activity {
private static final String TAG = "LifeCycleTest";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick");
AlertDialog dialog = new AlertDialog.Builder(LifeCycleTestActivity.this).create();
dialog.setMessage("You Clicked on the button");
dialog.setTitle("Dialog!");
dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog.setCancelable(true);
dialog.show();
/*
Dialog dialog = new Dialog(LifeCycleTestActivity.this);
dialog.setTitle("Dialog!");
dialog.setCancelable(true);
dialog.show();
*/
}
});
}
@Override
protected void onPause() {
Log.d(TAG, "onPause() called");
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume() called");
}
}
onPause()
的推理也解释了为什么即使通知栏被拉到底部完全遮挡了活动,onPause()
也不会被调用。 - curioustechizen