2

Activity A1のがあり、のが起動したProcess P1としましょう。アクティビティA2は、システムがRAMのP1を強制終了する必要がある多くのことを処理する必要があります。どうなるのかしら。Activity A1Activity A2Process P2

ご覧のとおり、起動後に強制的にキルスルーProcess P1すると、設定画面を終了するとアクティビティA2もなくなります。Application ManagerActivity A2

[強制停止]ボタンを押す前のアクティビティスタックは次のようになります。

Home -> A1 -> A2 -> Settings -> Apps -> App info(of P1)

私がそれを打った後、それはこのように見えるでしょう:

Home -> Settings -> Apps -> App info

私はA1のプロセスを殺しただけですが、A2も破壊されています。

すべてがうまくいきます。A1が破壊されてもA2がまだ生きていることを誰も望んでいないと思います。しかし、A1が殺された後もA2が生き続ける可能性があるのではないかと思います。私のプログラムでは、そのような状況を調査する必要があります。

Home -> A2

A2が終了すると、A2からの結果を受け入れるためにA1が作成されます。


もう少し「調査」をしました。A1がA2を起動し、メモリが不足している場合、4.0.3エミュレータはP1ではなくP2を強制終了します。つまり、フォアグラウンドアクティビティですが、A2は閉じられます。

4

1 に答える 1

0

起動されたときのアクティビティはバックスタックに保存され、サーフィンされたすべてのアクティビティはこのスタックに保存されます。finish()メソッドを使用して、別のアクティビティに移動するときにアクティビティを強制終了できます。これにより、同じアクティビティの別のインスタンスが同じアクティビティに戻ってサーフしたときに、スタックに再度プッシュされることはありません。

例:

A1             ---->            A2            ----->             A3

A1の最初のインスタンスがバック
スタックに入るA2の最初のインスタンスがバックスタック
に入るA3の最初のインスタンスがバックスタックに入る

A1             <----            A2            <-----            A3

A1の2番目のインスタンスがバックスタック
に入るA2の2番目のインスタンスがバックスタックに
入るA3の2番目のインスタンスがバックスタックに入る

したがって、finish()メソッドを使用していない場合、A1を強制終了してA2を強制終了する方法はありません。A2はスタック上で存続します。

于 2012-06-03T10:56:36.193 に答える