5

アクティビティ間で情報を渡したり、バンドルに追加したり、シングルトン クラスを使用してこのデータを保存およびアクセスしたりするためのより良い方法は何かを考えてみてください。私は過去にさまざまなAndroidサイドプロジェクトで両方を使用しましたが、現在ははるかに大規模なAndroidプロジェクトに取り組んでいるため、最初から物事を行うことを好みます.

私のアプリケーションはユーザーを認証し、ID に基づいてさまざまなクエリを実行する必要があります。アクティビティ間の結合を最小限に抑えるには、id をバンドルに追加し、各アクティビティに必要な情報をクエリさせることが最善の策だと思います。ただし、応答性を高めるために、シングルトン クラスを使用して永続的な情報を保存し、必要以上のクエリを防ぐことに傾倒していました。

4

5 に答える 5

8

Application個人的には、アプリの状態を保存し、さまざまなアクティビティ間でデータを共有するための拡張機能を作成します。これらApplicationはアプリ全体のコンテキストとして機能し、Androidはアプリ全体で常に1つのインスタンスのみが存在することを保証します。したがって、独自のシングルトンを定義するのと同じように機能しますが、を使用Applicationすると、Androidが共有データのライフサイクルを制御し、基本的にメモリ管理を行うことができます。

詳細は次のとおりです。このパスをたどると、アプリケーション拡張機能に任意のゲッター/セッター(またはその他の)メソッドを追加して、データを保存/取得し、操作を実行できます。特に後者は、アクティビティ間で受け渡しを使用する場合、管理(および一貫性Bundleの維持)が非常に困難になる可能性があります。Bundleアクティビティフローの隣接する1つまたは2つの場所でデータが必要であり、そので(複雑な)操作を実行する必要がない場合にのみ、を使用します。

于 2012-09-16T19:23:54.967 に答える
1

bunlde を介してアクティビティ間でデータを渡すのは、しばらくアクセスする必要がないもの (つまり、呼び出し元のアクティビティで一度だけ使用したいリソースの resID など) の場合のみです。また、応答性の違いはごくわずかだと思いますので、気にする必要はありません。シングルトンアプローチをお勧めします

于 2012-09-16T18:31:21.110 に答える
1

より良い方法は、SharedPreferences を使用して、保持して再利用する必要がある userId を保持することです。もちろん、シングルトン アプローチや Application クラスを使用することもできますが、アプリケーションが強制終了されるとデータは失われます。

于 2013-05-09T21:45:26.473 に答える
0

バンドルを渡すのは面倒な作業です。呼び出されたアクティビティで値を使用していない場合でも、値が失われないようにするには、アクティビティが変更されるたびにバンドルを渡す必要があります。

于 2012-09-16T18:24:46.790 に答える
0

シングルトン パターンにはいくつかの悪い結果があります。例: メイン アクティビティから、セカンダリ アクティビティを呼び出します。通話により作業が中断されました。通話が終了した後、Android は二次的なアクティビティを画面に表示しようとしています。これが私の悪夢です - 多くのユーザーが例外について不満を言っています - Google は私のシングルトンに NULL ポインタを報告しました。したがって、シングルトンだけでなく、シングルトン内のすべてのデータもシングルトンとして提供する必要があります。これは非常に複雑になりました:(

于 2013-06-04T11:32:27.473 に答える