[解決済み] Androidです。どのような状況でダイアログが表示されるとonPause()が呼び出されるのでしょうか?
質問
Androidのスニペット 活動内容 ドキュメント("までスクロールしてください。 前景寿命 "行)によると:
アクティビティは頻繁にフォアグラウンドに移行したり、フォアグラウンドから外れたりします。 例えば
onPause()
はデバイスがスリープしたときに呼び出されます または ダイアログが表示されたとき .
これがよくわからないのです。どのような状況でこのようなことが起こるのでしょうか?それは
onPause()
は、問題のダイアログのコンテキストが、ダイアログが表示されるアクティビティと異なる場合にのみ呼び出されるのですか?
編集:私の疑問を詳細に説明するためにコードサンプルを追加します。
上記のドキュメントからの引用によると、私のアクティビティの
onPause()
メソッドが呼び出されるのでしょうか?
AlertDialog
(または単に
Dialog
が表示されるのでしょうか?ダイアログが表示されたときに "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()
は、アクティビティがアクティビティスタックの最上位でなくなったときに呼び出されます。 ダイアログ自体はアクティビティではないので、スタックの最上位にある現在のアクティビティを置き換えることはなく、一時停止することはありません。
ダイアログ(小文字)は、しかし、Dialogクラスによって実装される必要はありません。 例えば、テーマをダイアログに設定したActivityで実装することはよくあります。 この場合 dialog-as-an-Activity を表示すると、新しいアクティビティがスタックの一番上に表示され、それまであったものが一時停止されます。
関連
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] 非推奨のandroid.support.v4.app.ActionBarDrawerToggleの置き換え方法
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] handler.postDelayed()を停止する。
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] グリッドビューの高さが削減される