Androidアクティビティドキュメントのスニペット(「フォアグラウンドライフタイム」の行までスクロールダウン)には、次のように記載されています。
アクティビティは、フォアグラウンドに頻繁に出入りする可能性があります。たとえば、
onPause()
デバイスがスリープ状態になったとき、またはダイアログが表示されたときに呼び出されます。
私はこれをよく理解していません。これはどのような状況で発生する必要がありますか?onPause()
問題のダイアログのコンテキストが、ダイアログが表示されるアクティビティと異なる場合にのみ呼び出されますか?
編集:私の疑問を詳細に説明するためのコードサンプルを追加する
上記のドキュメントからの引用によると、次のコードの(または単に)が表示されonPause()
たときに、アクティビティのメソッドを呼び出す必要がありますか?ダイアログが表示されたときに「onPausecalled」ログエントリを表示する必要がありますか?AlertDialog
Dialog
しかし、私はそれが起こるのを見ていません。また、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");
}
}