1

Android アプリケーション全体でオブジェクトのコレクションへのアクセスを実装する最良の方法を決定しようとしています。起動時にサーバーから取得され、必要に応じて更新されるオブジェクトのリストにアクセスできるようにするには、すべてのアクティビティが必要です。特定のユーザーの注文のコレクションであるとしましょう。これは、リストに表示され、アプリケーションを使用して更新されます。

両方を使用する理由についての詳細な説明を読みましたが、アプリケーションに最適なものを決定しようとしています.

-タブレットでは使用されません -他のAndroidアプリとは相互作用しません

Applicationクラスを拡張し、アプリケーションのロード時に構築される UserData というクラスを実装しました。UserData 型にキャストすることで、いつでも取得できます。getApplicationContext()

これが最善の方法ですか?アプリケーションの実行時にすぐにデータをロードし、インターネット接続が利用可能になったときにバックグラウンドで更新できるように、データをデバイスにローカルに保存しやすくするために、どちらの方法が優先されますか?

4

2 に答える 2

0

私の即時の反応は、exported="false" でコンテンツ プロバイダーを使用する必要があるというものです。オブジェクト内のデータは確実に保持され、必要なときにいつでも更新でき、デバイスが接続されていない場合でも有用なデータを表示できます。アプリケーション全体が強制終了されても、データは残っています。

Androidアプリの世界は危険に満ちているため、データをメモリに「永続化」することをためらっています:)。システムが私を殺すだけでなく、ユーザーは喜んでタスクを強制終了したり (何らかの形でパフォーマンスを向上させていると誤解して)、電話を切ったりすることさえあります。つまり、ファイル システムに何かを書き込む場合を除いて、永続性を期待することはできません。

カーソルを登録してコンテンツ プロバイダーの変更を監視し、カーソルを ListView に適応させることができることに注意してください。そうすれば、データが変更されるたびに通知されます。

それを超えて、「アプリケーション」を検索してから「シングルトン」を検索し、コンセンサスが何であるかを確認します。

于 2012-11-08T21:10:01.177 に答える
0

@Joe Malinが述べたようにしないことにした場合は、シングルトンモデルを使用してください。データを保持するのは、アプリケーション クラスの責任ではありません。モデルの役目です。ただし、アプリケーションがバックグラウンドになると、OS がアプリを強制終了し、モデルが停止する可能性があることに注意してください。アプリがフォアグラウンドにある限り、死ぬことはありません。これには、外部ブラウザやビデオ プレーヤーの起動などが含まれます。OS がメモリを要求する必要がある場合、ビデオ プレーヤーが完了するまでにアプリとモデルが停止する可能性があります。

于 2012-11-08T21:25:16.753 に答える