2

ダイアログをテーマにしたアクティビティがあります。ダイアログが表示されているときにホームボタンを押してからタスクマネージャーを使用してアプリを再起動すると、そのダイアログアクティビティはアプリが開始するアクティビティになり、他のアクティビティに戻ることはできません。に。つまり、ダイアログアクティビティをロードしたときに実行されていたアクティビティが実行されていません。だから私はこのダイアログをテーマにしたアクティビティをデスクトップ上に置いています。それは理にかなっている。

Androidのアクティビティライフサイクルを見ると、OSは最後のアクティビティを記憶しており、そこで再起動を試みます。そのため、アクティビティですべてのon *メソッド(onResume、onRestartなど)を作成しました。私が見つけたのは本当に不可解でした。タスクマネージャーからアプリを再起動すると、次のメソッドが呼び出されます。

onCreate()
onResume()
onStop()
onDestroy()

私が本当に期待していたところ

onRestart()
onCreate()
onResume()
  • onStopとonDestroyがすぐに呼び出されるのはなぜですか?また、onDestroyが呼び出されても、ダイアログが表示されるのはなぜですか?
  • このダイアログだけで起動しないようにこのアプリを構成するにはどうすればよいですか?同じ「親」アクティビティとその上のダイアログで(つまり、そのままにして)アプリを再起動するか、親アクティビティだけを実行してダイアログを閉じても問題ありません。
4

1 に答える 1

1

この場合、finish()ダイアログコードでへの呼び出しを使用する必要があります。これは、ユーザーがアプリから離れるときに行います(これは、ユーザーがホームボタンに移動したり、電話を受けたりしたときに発生する可能性があります...)。この場合、ダイアログfinish()onStop()でを呼び出す必要があります。現在のアクティビティを終了するための呼び出しは、スタックからそれを削除し、基本的に説明した動作を取得します。

于 2012-06-02T01:59:02.477 に答える