1

2つのアプリケーションAとBがあります。どちらもアクティビティが1つだけです。アプリケーションAがアプリケーションBを起動します。Bでアクティビティを閉じると、Aに戻ります。アプリケーションBをメモリに保持するにはどうすればよいですか。finish()を使用してBのアクティビティを閉じると、Bはメモリに残ります。これは、次回Androidがそれを使用するか、別のインスタンスを開始することを意味しますか?

アップデート

アプリケーションBのマニフェストに単一のタスクまたは単一のアクティビティが設定されている場合はどうなりますか?それとも、Bの行動はAの意図に依存するのでしょうか?

4

1 に答える 1

1

「アプリケーションBをメモリに保持する方法」と尋ねるとき、正確にはどういう意味ですか?

あなたが本当に2つの別々のアプリケーションについて話しているなら、Androidは別々のプロセスで各アプリケーションを開始します。各プロセスには独自の仮想マシンがあります。アプリケーションAのアクティビティがアプリケーションBのアクティビティを開始する場合、2つの実行中のプロセスがあります。Bのアクティビティが呼び出されるとfinish()、それが実行されます。しばらくして、AndroidはonDestroy()Bのアクティビティを呼び出し、しばらくして、AndroidはBが実行されているプロセスを強制終了します。Androidは、メモリが必要なとき、または必要と判断したときにプロセスを強制終了します。プロセスを強制終了するために使用する内部基準に基づいています。

ユーザーがアプリケーションBからアプリケーションAに戻った後、ユーザーがアプリケーションBでアクティビティを再度開始すると、Androidは、アプリケーションBが実行されているプロセスでそのアクティビティの新しいインスタンスを作成します。プロセスがすでにAndroidによって強制終了されている場合、AndroidはアプリケーションBの新しいプロセスを作成し、そのプロセス内にアクティビティの新しいインスタンスを作成します。

アクティビティが呼び出されるとfinish()、それは再利用されません。されております。死んでいます。破棄とガベージコレクションの準備ができています。アクティビティに何launchModeを設定するか、またはにどのフラグを設定するかは関係ありませんIntent

これがあなたの質問に答えることを願っています。

于 2012-05-31T16:44:16.493 に答える