3

しばらくの間、私を悩ませてきた質問があります。あるアクティビティから別のアクティビティにデータを取得するための正規の、またはベスト プラクティスと見なされる手段を知りたいです。私は個人的にこれを行う2つの方法を認識しています。最初の方法は、putExtra() 関数 (または同様のもの) を介して、データを Intent に直接バンドルすることです。ただし、この方法はカプセル化の原則に少し違反しているように思えます。これを行った 2 つ目の方法は、データを別のクラスに配置し、そのクラスを 2 つのアクティビティ間で共有することです。これはより根本的に健全なようですが、まだ確信が持てません。誰でもこれに光を当てたいですか?

4

3 に答える 3

2

アプリを作成するときに同じ質問があり、最終的に Application クラスを拡張する CustomApplication クラスを作成し、それを AndroidManifest.xml のタグに追加しました。このようにして、適切なゲッターとセッターを使用して、あらゆるタイプのデータを内部に格納できます。(CustomApplication).getApplicationContext() を呼び出すと、アプリ全体で一意の CustomApplication オブジェクトが返され、単一のインスタンス (シングルトン) に存在し、これを使用して必要な値を設定および取得できます。

利点は、アプリの任意の部分 (アクティビティ、サービスなど) が実行されている限り、Application オブジェクトとその中のデータが存在することです。

于 2012-10-26T03:55:28.580 に答える
1

間でデータを共有するには、さまざまな方法がありますActivities

  1. intデータが,doubleのような定義済みのデータ型である場合は、string直接Intent.

  2. データがバイナリ形式またはオブジェクトのような形式の場合は、クラスをParcelableインターフェイスに実装し、送信するために配置Intentします。

  3. データが軽いか小さい場合は、上記の 1、2 のようにします。ただし、パフォーマンスや品質に影響を与えるほど大きい場合は、データ ストアが必要だと思います。ファイル、xml、データベースなどの場所にデータを保存し、そこから読み取り/書き込みを行うようなものです。

于 2012-10-26T00:43:06.997 に答える
1

任意のクラスをParcelableインターフェイスに実装してアクティビティ間で配信できますが、この方法ではオブジェクトの新しいコピーが作成され、一貫性が損なわれます。

Android は、Model–View–Controller (MVC) で設計されています。アクティビティはコントローラーであり、データ自体を保持したり、データを直接配信したりすべきではないと思います。アクティビティが次のアクティビティにデータの場所を伝え、次のアクティビティがモデル自体からデータを取得することをお勧めします。

多分あなたは使うことができますProvider。アクティビティ A はデータの uri をインテントに入れ、インテントを送信してアクティビティ B を開始し、アクティビティ B はインテントからデータの uri を取得し、それを使用してプロバイダーからデータを取得します。

于 2012-10-26T03:13:50.990 に答える