問題タブ [parcel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - オブジェクト メンバーをパーセルに書き込む
これまでのところ、私はParcelable問題なくオブジェクトを処理してきました。主な理由は、オブジェクトのすべてのメンバーが、writeX()関連付けられたメソッドを持つ型であったためです。たとえば、次のようにします。
しかし今、私がBarメンバーを持っている場合、物事は私にとって少し危険になります:
私はこれに間違った方法でアプローチしていますか? writeToParcelto parcel membersで何をすればよいBarですか?
android - getParcelableExtra(intent_name)からParcelableを実装するオブジェクトを作成するための構文
RESTful通信のDataDroidモデルを実装していますが、の実装中にコンパイラエラーが発生しましたSearchCriteria。SearchCriteria問題は、インテントエクストラとしてアラウンドを渡すために、それを実装させる必要があったことParcelableです。ただし、私Workerのstart関数にはSearchCriteriaクラスが必要であるため、次のエラーが発生しますRequired: my.classes.SearchCriteria; Found: android.os.Parcelable。
Parcelableクラスに正しく実装されていると仮定するとSearchCriteria、パーセルからオブジェクトをすばやく作成するにはどうすればよいですか(パーセルはgetParcelable Extra(INTENT_NAME)?を使用して検出されます)。
編集:コンストラクターをパブリックから作成することでこれをすばやく達成できることに気付きましたが、別の方法はありますか?実際、これは機能しません-私は物事と混同しSearchCriteriaParcelParcelましたParcelable。
android - Androidの小包、メモリまたはディスクに保存されていますか?ディスクに保存する方法
パーセルとシリアライズ可能は、同じコンテキストで一種の交換可能に、または少なくとも直感的ではなく使用されているように見えます。私のためにいくつかのことを明確にしていただけますか?
パーセルの永続ストレージ(ディスク上)またはメモリのみに保存されます
区画データをディスクに保存するためにシリアライズ可能にする必要がありますか
洞察に感謝します、そしていいえ、アンドロイド開発マニュアルはこれを私に明白にしません
android - BadParcelableException: アンマーシャリング時の ClassNotFoundException: (空のクラス名)
AllStatStruct という名前のクラスがあります。このクラスには、私のクラス StatStructCycle、StatStructHistory、および MatrixStruct のオブジェクトである 3 つの属性が含まれています。すべてのクラスはクラス DataStruct を拡張し、Parcelable インターフェースを実装します。readParceable()インターフェイスの実装では、すべてのクラスがorを使用して読み書きされwriteParceable()ます。
私のアクティビティでは、AsyncTask で SOAP Web サービスを呼び出し、 class のオブジェクトを取得しますAllStatStruct。このオブジェクトは、次のアクティビティを作成することによって次のアクティビティに渡されますBundle。
LogCat のトレース出力でわかるように、パーセルのマーシャリングはうまく機能しています。しかし、区画をアンマーシャリングすると ClassNotFoundException が発生し、その理由がわかりません。これはトレースです:
ご覧のとおり、見つからないクラスには名前がありません。したがって、「」という名前のクラスを検索していますが、もちろん見つかりません。
なぜこれが起こるのか、私にはわかりません。誰かが私を助けることができますか?私はすでに ClassLoader をいじってみましたが、インテントに追加のクラスローダーを与え、これを使用してパーセルブルを非整列化することはできません。
編集:
あなたが示唆したように、私は AllStatStruct のいくつかの部分を別々に渡そうとしました。StatStructCycleおよびMatrixStructでは問題なく動作しますが、StatStructHistoryではまだエラーがスローされます。
NullPointerExceptions を含む ArrayList をアンマーシャリングしようとすると、が得られStatStructCycleます。履歴の他の部分をコメントアウトしました。
と を使用して ArrayList を読み書きしようとしましたwriteTypedList(List<T> list)がreadTypedList(List<T> list, Creator<T> c)、どちらも機能していません。
trimToSize()ArrayLists を使用しているので、ArrayList の「空の」スロットが問題を引き起こす可能性があると考えたため、を使用して容量を実際のサイズに調整しました。しかし、繰り返しますが、そうではありません...
デバッガーでアプリを起動すると、マーシャリングされたStatStructHistoryものに空の値がないことが示されます...すべての属性またはリストアイテムが初期化されます。これNullPointerExceptionがどこから来ているのか、私にはわかりません。
よろしくhtz
android - Androidはガベージコレクション後にParcelableデータを利用できますか?
パーセル可能なデータは永続的ですか? などの Android ライフサイクル関数で破棄する変数がいくつかありますがonDestroy()、parcelable に書き込まれたものはどうですか?
最終的には、インテントを介してパーセル可能なオブジェクトの要素を渡したいと思いますが、ガベージ コレクション (Java または dalvik のいずれか) の後でも利用できますか?
ありがとうございました
android - パーセルはいくつのデータを保存できますか?
Parcelablesアクティビティ間で情報を共有するために使用する際に問題が発生しました。実装には問題はありませんが、一部の電話での動作には問題があります。中に保存されている情報が多すぎるようです。これにより、オブジェクトがマーシャリングされていないときにMemoryExceptionsがスローされます。ドキュメント内にメモリ制限は見つかりませんでした。与えられた情報が小さい場合、に書き込まれるParcel前に、に/からそれらを書き込んだり読み取ったりするのに十分な場合、それを見つけるための最良の方法は何ですか?ParcelableParcel
java - Android Parcelable はより多くのメモリを消費します
オブジェクトを分割可能にし、それをバンドルに入れて、バンドルを使用してフラグメントを作成する場合、質問は簡単です。オブジェクトは複製されますか、それとも参照されますか。
コンテキスト。
ArrayList に格納/参照されているオブジェクトを取得しました。ArrayList 内のオブジェクトのタイプによって異なります (ポリモーフィズムが使用されます)。それを処理するのに適したフラグメントを作成します。
このオブジェクトもフラグメントに渡す必要があります。フラグメントは、カスタム ビュー ページャー内で使用されます。私はオブジェクトを複製したくありません。パーセル可能なクローンオブジェクトのようです。
もう 1 つの方法は、オブジェクトのインデックスを ArrayList に渡すことです。次に、getActivity().myList.get(Integer passed to ) を使用して、フラグメントから arraylist への参照を取得します。しかし、私にはあまり安全ではないようです (ArrayList の内容は変更される可能性がありますが、単にすべてを削除してやり直すだけです)。デフォルトの引数なしコンストラクターを使用して再作成される可能性があるため、フラグメントコンストラクターに引数を渡さないようにする必要があることも読みました。
(現在、再作成されたフラグメントを破棄していますが、正しいビューに再接続する際に奇妙な問題があるため、別の投稿)。
新しいサブ質問: フラグメントへの参照によって値を渡す方法はありますか?
android - android sms sendtextmessage が readexception をスローする
次のコードを使用して、アプリケーションから SMS を送信しています。私のGalaxy popデバイスでは問題なく動作します。ただし、Premium Galaxy デバイスでは Readexception が発生します。何が問題なのか教えてください。
android - Parcelable インターフェースを置き換えるためのベスト プラクティス
私は通常、インターフェイスを使用して、Parcelableあるアクティビティから別のアクティビティにデータを渡します。データがそれほど多くない場合は、正常に機能しています。ただし、アクティビティに大量のデータを渡さなければならない場合があります。これらのデータのマーシャリングはエラーなしで行われるように見えますが、アンマーシャリングは次のようなエラーになります:
非整列化するにはデータが多すぎるようです。本当にハックな解決策 (私は本当に好きではありません) は、その特別なアクティビティにそのデータを渡すための静的メソッドを与え、 でそれを探すことonCreate()です。これは、少なくともソースを制御できるアクティビティでは機能しますが、そうでない場合は失敗します。
あるアクティビティから別のアクティビティに大量のデータを渡すために、他に許容できる試行があるかどうかを知りたいです。Parcelable インターフェース用にすでに書いたコードを再利用できれば本当にいいのですが、それは必須ではありません