5

Android アーキテクチャを考慮し、インテント、ビュー、アクティビティ、コンテンツ プロバイダーなどの Android の動作設計を考慮して、パーセルブルまたはバンドルとはどのような種類の「もの」か説明してもらえますか? Android Web サイトに書かれている説明は、私には少し不十分に聞こえます。つまり、「Bundle と呼ばれる特別なタイプ セーフ コンテナが、異種値のキー/値マップに使用できます。」という意味です。私はバンドルについてこれ以上何も知りません.XMLファイル、ハッシュマップ、および「キー/値マップ」の他のすべてのバリアントである可能性があります。

パーセルブルまたはバンドルとは何ですか? また、それらの設計と機能は何ですか?

ありがとう。

4

3 に答える 3

10

ParcelableBundle、意図を持って発信したい情報のパッケージです!

Bundle: 新規に開始する場合は、作成したとともに に情報をactivity送信できます。Bundleactivitynew Intent

// Bundle b is sent with new intent i
Bundle b = new Bundle();
b.putString(key, value);
b.putInt(key, value);
Intent i = new Intent(...);
i.putExtras(b);
startActivity(i);
// In the activity which started from the intent i, you can get the bundle b
this.getIntent().getExtras();

Parcelable(独自のクラス) をまたは と一緒interfaceに渡したい場合は、これを実装する必要があります。objectbundleintentinterface

class Example implements Parcelable{
      // some information here
}
// You can send with intent or bundle:
b.putParcelable(key, value);
i.putExtra(name, value);

Google Android の詳細はこちら: Bundle Parcelable

于 2012-08-01T01:30:06.387 に答える
4

Android は、J2SDK のシリアル化の概念と同じように、Parcel と呼ばれる新しい軽量 IPC (Inter Process Communication) データ構造を定義しました。これにより、オブジェクトをバイト ストリームでフラット化できます。

Android パーセルの簡単な定義は、軽量で高性能なプロセス間通信 (IPC) のメッセージ コンテナーです。Android では、「プロセス」は標準の Linux プロセスであり、あるプロセスは通常、別のプロセスのメモリにアクセスできません。そのため、パーセルを使用すると、Android システムはオブジェクトをプリミティブに分解し、プロセス境界を越えてマーシャリング/アンマーシャリングできるようにします。

ただし、パーセルは同じプロセス内で使用して、同じアプリケーションのさまざまなコンポーネント間でデータを渡すこともできます。例として、典型的な Android アプリケーションには「Activities」と呼ばれる複数の画面があり、1 つのアクティビティから次のアクティビティにデータまたはアクションを伝達する必要があります。通過できるオブジェクトを作成するために、Parcelable インターフェースを実装できます。Android 自体は、あるコンポーネントから別のコンポーネントに情報を渡すために使用される Intent と呼ばれる組み込みの Parcelable オブジェクトを提供します。

バンドルは、Android コンポーネント間で情報を渡す Android の方法です。あなたが言ったように、キーと値のペアを入れることができる辞書です。バンドルに入れることができるものはすべて、プリミティブまたはパーセルである必要があります。

于 2012-08-01T03:43:12.737 に答える
3

BundleはParcelableを実装します。バンドル インスタンスは、名前と値のペアを格納するために使用されます。名前は文字列で、値は Parcelable を実装するクラスです。Parcelable を実装するクラスは、 IPC に使用されるIBinderでシリアル化できるParcelに変換できます。

これの最も一般的な用途は、アクティビティとサービスの間で値を渡すことです (インテント エクストラ)

于 2012-08-01T01:24:28.010 に答える