7

ウィザードのように機能するいくつかのアクティビティを持つAndroidアプリを設計しています。ユーザーは、アクティビティ#1からアクティビティ#5に渡して、最終的なアクティビティ(#6)に到達する必要があります。

低メモリのOSによってアクティビティが突然終了する可能性があることがわかっているため、ユーザーが「ウィザード」アクティビティで入力したデータや、アプリがセッション全体で必要とするその他のデータを保持するための静的ストレージとしてApplicationクラスを使用しました。

残念ながら、このアプローチが失敗することを発見しました-アプリケーションクラスインスタンスもOSによって強制終了される可能性があります(これはAndroid 1.6と1.5で特に発見されました)。このアプローチに対する私たちの期待は間違っていますか(アプリケーションクラスインスタンスは常にアプリセッション全体で存続すると思います)?

したがって、問題は、アプリケーションセッション全体でアクティビティの停止/再開の間にデータを保持するためのAndroidのベストプラクティスは何ですか?

4

2 に答える 2

10

ウィザードのように機能するいくつかのアクティビティを持つAndroidアプリを設計しています。ユーザーは、アクティビティ#1からアクティビティ#5に渡して、最終的なアクティビティ(#6)に到達する必要があります。

それらを別々のアクティビティとして実装する必要がありますか?ViewFlipperウィザードの状態間を移動するために、または何かを使用して、単一のアクティビティを実行しないのはなぜですか?

このアプローチに対する私たちの期待は間違っていますか(アプリケーションクラスインスタンスは常にアプリセッション全体で存続すると思います)?

アプリケーションクラスインスタンスは、アプリセッション全体(AFAIK)で常に有効です。ただし、すべてのアクティビティが破棄されると、アプリケーションも破棄されます。

したがって、問題は、アプリケーションセッション全体でアクティビティの停止/再開の間にデータを保持するためのAndroidのベストプラクティスは何ですか?

  1. --を使用します。ServiceこれがRAMから追い出された場合は、最初からやり直してください。
  2. データベースを使用する
  3. ファイルを使用する

または、最善:この場合、複数のアクティビティを使用しないでください。ウィザードは単一の論理的なものです。それをそのように扱い、それを単一の活動にします。を介して状態を永続化するonSaveInstanceState()と、設定が完了します。

于 2010-01-09T13:11:53.730 に答える
0

ユーザーが入力して保存する必要のあるデータが単なるプリミティブのセットである場合はSharedPreferences、永続ストレージとして使用できます。

于 2010-01-09T11:32:53.587 に答える