4

アプリの他のユーザーとデータを同期するためにバックエンド サーバーを必要とする Android 用アプリの開発を計画しています。このサーバーは、UNIX サーバー上で実行される標準の Java で作成する予定です。

私は一度これを 2 つの Android デバイス間で直接行ったことがあります。その場合、両端で送信する必要があるすべてのデータをシリアル化しました。

ただし、Dalvik がシリアライズする形式と Java SE の形式には互換性がないと思われます。これは事実ですか?もしそうなら、私の代替手段は何ですか?私の頭に浮かんだことの 1 つは、ソケットを介して生の xml を送信することでしたが、より良い代替手段があれば喜んで聞いてください。

ありがとう。

4

6 に答える 6

6

サーバーを実行している場合は、XML や JSON などのより標準的なものに依存する必要があります。個人的にはJSONが好きです。すべてのクライアントが Java フレンドリーであると期待するべきではありません。ほぼすべてのモバイル デバイスが JSON をサポートしています。Jacksonライブラリを見て、json を生成します。次に、Jackson を再度使用して、オブジェクトを逆シリアル化できます。

このソリューションの美しさは、ばかばかしいほどシンプルでもあります。ブラウザにリクエストを入れるだけでコンテンツを見ることができます。バイナリデータではそれほど簡単ではありません。

于 2011-01-24T16:56:53.570 に答える
3

Android デバイスとサーバー間でデータのシリアル化を正常に使用しました。

特にクラスは完全に互換性がないTimeZoneため、クラスを文字列に変換して元に戻す必要がありました( Androidに搭載されたパッケージで何かを転送しようとしました)。TimeZonesun.ClassNotFoundException

それ以外に、java.utilコレクションやマップ、java.sqlデータ型、そしてもちろんjava.langStringIntegerなどからオブジェクトを転送できました。

于 2011-01-24T16:56:25.107 に答える
2

シリアル化のためにprotobufを試すことができます。その方が効率が良いとされており、互換性を気にする必要はありません。

また、何らかの形式の XML シリアライゼーション (JAXB、XStream、XMLEncoder など) を使用することもできます。

この質問の解決策は、互換性あることを示唆しています。

于 2011-01-24T16:53:02.657 に答える
1

このベンチマークを見てください。私が使っているのはKryoです。これは、Dalvik と JSE の両方に適した方法で実行できるカスタム バイナリ シリアライゼーションの作成をサポートします。

追加の説明とリンクを提供する関連する質問を確認することをお勧めします。

于 2011-01-24T17:09:39.303 に答える
1

オブジェクト グラフが非常に単純で、JSON に慣れている場合は、Android にJSON サポートが含まれているため、Java SE で簡単にサポートを取得できます。私は、XML や Java のシリアライゼーションが「重い」と思われる場合、JSON を良い代替手段と考える傾向があります。

于 2011-01-24T16:55:12.650 に答える
0

プロトコル バッファは、ネットワーク上で検討するのに適した形式です。

ダルビクの連載は語り尽くせません。

于 2011-01-24T16:51:59.193 に答える