なぜAndroid IntentでBundleを使うのですか?
Intent
Androidではintentはメッセージオブジェクトであり、他の要素からの操作を要求するために使用できます.代表的な使用方法はactivityを呼び出すことです.
ためらう
intentで実装されたputExtra()メソッドを用いてデータを伝達する方法がある.
ここに懸念が現れた.
//1
val intent = Intent()
intent.putExtra("key","value")
//2
val intent = Intent()
val bundle =Bundle()
bundle.putString("key","value")
intent.putExtra("bundle",bundle)
1番の方法と2番の方法の違いは何ですか?私はずっと1番の方法を使っていて、2番の方法があることに気づきました.
上記の2つの方法を用いても同様の結果が得られる.
Bundleを使う部分が一目瞭然で、手間もかかります.
だからBundleを使わないほうが楽に見えると思います.
ないぶこうぞう
便利なことに、Bundleを使わないのは便利に違いない.
しかし、内部構造から見ると、状況は異なる.(可能)
private Bundle mExtras;
public @NonNull Intent putExtra(String name, @Nullable String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
IntentのputExtraは最終的にBundleを使用した.すなわち,putExtra()は便宜上の支援にすぎない.
それに対して
ArrayMap<String, Object> mMap = null;
public void putString(@Nullable String key, @Nullable String value) {
unparcel();
mMap.put(key, value);
}
Bundleのメソッドを表示すると、Mapを使用してデータ入力が行われていることがわかります.n/a.結論
では内部でBundleを使います.
やはり使いやすいIntentの方がいいです.
if (mExtras == null) {
mExtras = new Bundle();
}
問題は、intentに直接データを入れると、上のコードが通ります.すなわち,入力データごとに条件文を1回通過する.
これに対してBundleを使用すると
mMap.put(key, value);
Mapに直接置く入れたデータ量によって速度が異なる場合があります.
要するに、Bundleを使うともっとよく見えます.
Reference
この問題について(なぜAndroid IntentでBundleを使うのですか?), 我々は、より多くの情報をここで見つけました https://velog.io/@rkvps11369/Android-Intent에서-Bundle을-왜씀テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol