問題タブ [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.

0 投票する
2 に答える
12858 参照

java - オブジェクト メンバーをパーセルに書き込む

これまでのところ、私はParcelable問題なくオブジェクトを処理してきました。主な理由は、オブジェクトのすべてのメンバーが、writeX()関連付けられたメソッドを持つ型であったためです。たとえば、次のようにします。

しかし今、私がBarメンバーを持っている場合、物事は私にとって少し危険になります:

私はこれに間違った方法でアプローチしていますか? writeToParcelto parcel membersで何をすればよいBarですか?

0 投票する
1 に答える
345 参照

android - getParcelableExtra(intent_name)からParcelableを実装するオブジェクトを作成するための構文

RESTful通信のDataDroidモデルを実装していますが、の実装中にコンパイラエラーが発生しましたSearchCriteriaSearchCriteria問題は、インテントエクストラとしてアラウンドを渡すために、それを実装させる必要があったことParcelableです。ただし、私Workerstart関数にはSearchCriteriaクラスが必要であるため、次のエラーが発生しますRequired: my.classes.SearchCriteria; Found: android.os.Parcelable

Parcelableクラスに正しく実装されていると仮定するとSearchCriteria、パーセルからオブジェクトをすばやく作成するにはどうすればよいですか(パーセルはgetParcelable Extra(INTENT_NAME)?を使用して検出されます)。

編集:コンストラクターをパブリックから作成することでこれをすばやく達成できることに気付きましたが、別の方法はありますSearchCriteriaParcel実際、これは機能しません-私は物事と混同しParcelましたParcelable

0 投票する
2 に答える
2909 参照

android - Androidの小包、メモリまたはディスクに保存されていますか?ディスクに保存する方法

パーセルとシリアライズ可能は、同じコンテキストで一種の交換可能に、または少なくとも直感的ではなく使用されているように見えます。私のためにいくつかのことを明確にしていただけますか?

  1. パーセルの永続ストレージ(ディスク上)またはメモリのみに保存されます

  2. 区画データをディスクに保存するためにシリアライズ可能にする必要がありますか

洞察に感謝します、そしていいえ、アンドロイド開発マニュアルはこれを私に明白にしません

0 投票する
1 に答える
7794 参照

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

0 投票する
1 に答える
509 参照

android - Androidはガベージコレクション後にParcelableデータを利用できますか?

パーセル可能なデータは永続的ですか? などの Android ライフサイクル関数で破棄する変数がいくつかありますがonDestroy()、parcelable に書き込まれたものはどうですか?

最終的には、インテントを介してパーセル可能なオブジェクトの要素を渡したいと思いますが、ガベージ コレクション (Java または dalvik のいずれか) の後でも利用できますか?

ありがとうございました

0 投票する
2 に答える
132 参照

android - パーセルはいくつのデータを保存できますか?

Parcelablesアクティビティ間で情報を共有するために使用する際に問題が発生しました。実装には問題はありませんが、一部の電話での動作には問題があります。中に保存されている情報が多すぎるようです。これにより、オブジェクトがマーシャリングされていないときにMemoryExceptionsがスローされます。ドキュメント内にメモリ制限は見つかりませんでした。与えられた情報が小さい場合、に書き込まれるParcel前に、に/からそれらを書き込んだり読み取ったりするのに十分な場合、それを見つけるための最良の方法は何ですか?ParcelableParcel

0 投票する
1 に答える
643 参照

java - Android Parcelable はより多くのメモリを消費します

オブジェクトを分割可能にし、それをバンドルに入れて、バンドルを使用してフラグメントを作成する場合、質問は簡単です。オブジェクトは複製されますか、それとも参照されますか。

コンテキスト。

ArrayList に格納/参照されているオブジェクトを取得しました。ArrayList 内のオブジェクトのタイプによって異なります (ポリモーフィズムが使用されます)。それを処理するのに適したフラグメントを作成します。

このオブジェクトもフラグメントに渡す必要があります。フラグメントは、カスタム ビュー ページャー内で使用されます。私はオブジェクトを複製したくありません。パーセル可能なクローンオブジェクトのようです。

もう 1 つの方法は、オブジェクトのインデックスを ArrayList に渡すことです。次に、getActivity().myList.get(Integer passed to ) を使用して、フラグメントから arraylist への参照を取得します。しかし、私にはあまり安全ではないようです (ArrayList の内容は変更される可能性がありますが、単にすべてを削除してやり直すだけです)。デフォルトの引数なしコンストラクターを使用して再作成される可能性があるため、フラグメントコンストラクターに引数を渡さないようにする必要があることも読みました。

(現在、再作成されたフラグメントを破棄していますが、正しいビューに再接続する際に奇妙な問題があるため、別の投稿)。

新しいサブ質問: フラグメントへの参照によって値を渡す方法はありますか?

0 投票する
2 に答える
457 参照

android - android sms sendtextmessage が readexception をスローする

次のコードを使用して、アプリケーションから SMS を送信しています。私のGalaxy popデバイスでは問題なく動作します。ただし、Premium Galaxy デバイスでは Readexception が発生します。何が問題なのか教えてください。

0 投票する
2 に答える
696 参照

android - Parcelable インターフェースを置き換えるためのベスト プラクティス

私は通常、インターフェイスを使用して、Parcelableあるアクティビティから別のアクティビティにデータを渡します。データがそれほど多くない場合は、正常に機能しています。ただし、アクティビティに大量のデータを渡さなければならない場合があります。これらのデータのマーシャリングはエラーなしで行われるように見えますが、アンマーシャリングは次のようなエラーになります:

非整列化するにはデータが多すぎるようです。本当にハックな解決策 (私は本当に好きではありません) は、その特別なアクティビティにそのデータを渡すための静的メソッドを与え、 でそれを探すことonCreate()です。これは、少なくともソースを制御できるアクティビティでは機能しますが、そうでない場合は失敗します。

あるアクティビティから別のアクティビティに大量のデータを渡すために、他に許容できる試行があるかどうかを知りたいです。Parcelable インターフェース用にすでに書いたコードを再利用できれば本当にいいのですが、それは必須ではありません

0 投票する
1 に答える
4100 参照

android - ArrayList の読み取りと書き込み with various type of objects in parcel

I am using parcel to cache Items in binary file. Everything was fine until I need to store into single ArrayList various type of objects:

  

I am using parcel to cache Items in binary file. Everything was fine until I need to store into single ArrayList various type of objects:

But reading don't work properly:

I think problem is in Object classLoader, who can't create object for extended class.

Have any idea how I can easily fix this? Or maybe could somebody to give me advise for my task which is to cache ArrayList or Set into file with objects of type <? extends Object?>. Logcat:

More logcat:


Websocket message interupts dynamic loading of ExtJS class

in my ExtJS 4.1 application I use a websocket connection to remotely insantiate and control ExtJS classes from the server. The client is registered to websocket.onmessage and is waiting for incoming commands.

I defined a simple protocol for that. The server sends a "CREATE classname id". On client side I use Ext.create to instantiate the class. The server then can send commands via the websocket to the object. E.g. "DOSTUFF id". I'm using the dynamic loading mechnism of ExtJS.

In Chrome everything works fine.

The problem with Firefox is, that the second command message (DOSTUFF) is executed BEFORE the object has been created. This leads to an error because the object cannot be found. It seems that the second websocket commandmessage is executed before ExtJS has loaded the file via HTTP-GET.

In my world JavaScript is executed sequentially (I don't use webworkers). I think the call of Ext.create(..) should be executed synchronously with the HTTP-GET in background, shouldn't it?

Here is a "pseudo" trace output of my client application: