25

serializableAndroidであるアクティビティを別のアクティビティに渡すことに異議を唱える必要がある理由を誰か教えてください。Android は Java 構文に従っています。Java では、オブジェクトをシリアライズせずに別のクラスに渡すことができます。

ありがとう

4

4 に答える 4

14

パラメータ(オブジェクト型)を渡す通常のJavaプログラムでは、オブジェクトへの新しいハンドラを作成し、別のメソッドに渡すようなものです(通常の言葉では、参照を値で渡します)。

しかし、Android の場合、状態を永続化する必要があるアクティビティからアクティビティにオブジェクト参照を渡すことは、深刻な頭痛の種です。

あなたができる1つの方法は、最初のアクティビティで静的オブジェクトを作成し、2番目のアクティビティからアクセスすることです. したがって、2 番目のアクティビティでオブジェクト参照が失われる可能性があります。

他の方法で、最も推奨される方法は、オブジェクトをシリアライズ (オブジェクトを平坦化するようなもの) し、目的を追加して渡すことです。Android では、シリアル化する方法が 2 つあります。

  1. Java のシリアライズ可能なインターフェースを実装する
  2. Android のパーセル化可能なインターフェースを実装する

ただし、Android では、serializable を使用すると深刻なパフォーマンス ヒットが発生します。解決策は parcelable を使用することです。

Android の parcelable の実装に関する非常に優れたチュートリアルと説明がここにあります

于 2012-08-11T13:23:52.250 に答える
2

Activity から別の Activity にオブジェクトを渡したい場合。通過状態を保存する必要があります。

//to pass :
   intent.putExtra("MyClass", obj);  

// to retrieve object in second Activity
getIntent().getSerializableExtra("MyClass");
于 2012-08-11T10:03:51.920 に答える