2

ActivityGroup を使用してアクティビティのスタックを持つアプリがあります。新しいアクティビティを開始する場合は、ActivityGroup の子としてこれを行います。私が最初のアクティビティ (1) にいて、新しいアクティビティ (2) を開始すると仮定すると、次のように呼び出されます。

(1): onPause()

(2): onCreate()、onStart()、onResume()

ここまで、すべてアスペクトとして。BackButton を押すと、スタックは次のようになります。

(2): onPause()、onStop()、onDestroy()

(1): onStop()、onDestroy() [原文ママ]

(1): onCreate()、onStart()、onResume()

最初に (1) が onStop と onDestroy() を実行して再作成する必要がある理由と、2 番目に (1) で onRestart が呼び出されない理由がわかりません。

この動作の理由はありますか? どうにかして onStop() または onDestroy() の呼び出しを「キャンセル」できますか? どんなアイデアでも評価される

4

4 に答える 4

5

次のような子アクティビティを開始するときに FLAG_ACTIVITY_SINGLE_TOP を使用してみてください。

    Window window = getLocalActivityManager().startActivity(id,
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));

詳細はこちら:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP

于 2011-09-16T12:58:00.243 に答える
2

非常に簡単な方法で戻るボタンが押されたときに Activity onDestroy メソッドを回避できます。

言及するだけ

android:persistent="true"

あなたの活動のために、それはあなたの活動が破壊されるのを防ぐはずです。詳細については、以下のSO投稿にアクセスしてください。

活動が破壊されるのを可能な限り防ぐ

于 2016-03-04T07:13:51.833 に答える
0

戻るボタンを押すと、デフォルトの動作は現在のアクティビティを停止または破棄することで、戻るボタンをオーバーライドできます。ホームボタンを押すと onPause() が使用されます。これは、同じアクティビティを再度起動したときに現在のアクティビティを続行することを os が考慮することを意味しますが、戻るボタンを押すと、現在のアクティビティを終了して元の場所に戻ることを意味します。最後の活動

于 2011-09-16T12:57:38.263 に答える
0

Onstop()活動を終了するまで電話をかけonDestroy()ません。Ondestory()Activity が占有していたリソースを解放するために呼び出されます。IF アクティビティの使用が終了したら、このアクティビティを破棄することをお勧めします。

次に、メモリ管理スキームに適しています。destroy を呼び出さない場合は、アプリを終了するときに自動的に呼び出されます

最後に 、戻るボタンを押したときに破棄を呼び出したくない場合は、オーバーライドメソッドを使用できますonBackpressed()

于 2011-09-16T13:17:20.883 に答える