1

Android ライフサイクルと、さまざまな種類の if アクティビティ間のナビゲーションを管理する方法を理解するのに役立つことを願っています。次のシナリオを想定します。

  • アクティビティ 「MainMenu」が開始されます: ユーザーがメニュー項目をクリックします
  • アクティビティ B が開始され、UI にローカル データベースのコンテンツが読み込まれる
  • ユーザーがアクティビティ B と対話する
  • ユーザーが戻るボタンを押してアクティビティ A に戻る
  • ユーザーはアクティビティ B に戻るために同じメニューエントリをもう一度押します
  • 現時点で: アクティビティはゼロから読み込まれます
  • ウィッシュ: すべての UI エントリとユーザー インタラクションを含むアクティビティ B の前のインスタンスを再開する必要があります。

すべてのアクティビティを静的マネージャーに保存することを考えました。アクティビティが開始された場合、マネージャはそれが以前に開始されているかどうかを調べます。そうであれば、前のアクティビティを再開します。それはそれらのナビゲーションを処理する良い方法ですか? コードを介してアクティビティのインスタンスを直接再開するにはどうすればよいですか? または、これをより良い方法で行う別の方法はありますか?

前もって感謝します!こんにちは、ファイコ

4

3 に答える 3

1

スタックから外れると、アクティビティを「キャッシュ」できなくなります。アクティビティは非常に迅速に開始できます。データベースの処理が遅くなっていると推測しています。あなた何かをすることができるということ。

理論的には、ユーザーがA-> Bからエントリを複数回クリックすることがわかっている場合は、DBをアクティビティAのメモリにロードし、Parcel経由でBに送信することを お勧めします。まだメモリに残っているAに戻ると、すぐにBに戻ります。

これが正しいかどうかわからない場合は、デバッグしてステップスルーしてみてください。アクティビティはかなり迅速に開始されますが、遅れている操作を特定する必要があります。上記の説明から、それはおそらくデータベース呼び出しですが、ネットワーク呼び出しや他の長年の呼び出しのような他のものである可能性があります

于 2013-02-19T14:45:53.333 に答える
0

投稿したシナリオの活動のインスタンスを再開することはできません。Android のライフサイクルにより、アクティビティ B の戻るボタンを押すと、そのアクティビティはすべての状態と情報と共に破棄されるためです。

保持する情報を取得する 1 つのオプションは、Application クラスを拡張し、その情報をアプリケーション クラス内のいくつかの変数に保存することです。それでも、システムがメモリを必要とする場合、多くのことをガベージコレクションできます。アクティビティ A が強制終了され、アクティビティ B からアクティビティ A に戻ると、そのアクティビティがリロードされ、データベース アクセスが再び発生する必要があります。

于 2013-02-19T14:52:25.023 に答える
0

Android アクティビティのライフサイクルにより、新しいインテントを開始することはできませんが、古い状態を維持できます。

フィールドを保存してアクティビティの状態を保存し、必要に応じてこの状態に復元する必要があります。

于 2013-02-19T14:39:31.947 に答える