私は現在、アンドロイドデバイスにオブジェクト構造を保存する必要があるという問題に直面しています。アンドロイドデバイスに大きなアプリケーションデータを保存する場所
私はアプリケーションサーバー(AsyncTaskの助けを借りて)の呼び出しを開始し、サーバーからよく知られている応答(xml-response)を取得し、データを解析して最終的にオブジェクト構造に変換します(非常に複雑なクラス図と、クラス間の関連付けが多い)。これまでのところ、XMLPullParserのおかげで働いていました;) 私の活動の間にフェッチされたデータをどこに格納する(そしてもちろん共有するのか)と思っています...私はすでにsqliteを使うことができると知っています。 or-mapper(j2ee環境での休止状態など)。私はまた、この機密データをデバイス(sqliteまたはファイルシステム)に保存することは許可されていないので、私の最初のアプローチはこのデータをシングルトン(メモリに保持されているソース)に格納することでした。しかし、システムが低メモリになるとどうなりますか?アンドロイドは私のシングルトンに保存されているデータを "破壊"できますか?私はすでにandroid.app.Applicationクラスの拡張について読んでいます...だから、アンドロイドデバイスにオブジェクトデータ(「Webサービス」と呼ばれる)を安全に保存する最良の方法は何ですか?
ところで、Androidの開発はすばらしかったです!私たちは現在、AndroidとiPhoneにWindows Mobile 6.5 Appを移植しています。私の同僚(iPhone-devの責任者)はいつも不平を言っています^^
こんにちはNailuj、あなたの詳細な答えに感謝!だから、唯一の方法は、android.app.Applicationクラスを拡張してデータを格納することだと思います。これは、フェッチされたデータを低メモリに「安全に」格納できる唯一のチャンスです(システムがアプリケーションを終了させるとき)。データをシリアライズしてファイルシステムのjavax.cryptoに格納し、メモリが使用可能なとき(またはアプリケーションの状態が復元されたとき)にそのデータをリロードするのはどうでしょうか? –
@ tim.kaufner:そう、私は 'javax.crypto'について言及しました。他に "安全な"ソリューションがなければ、それを使用してデータを暗号化し、それを内部ストレージ(またはその問題のSQLiteデータベース)に保存することができます。暗号化/復号化の余分なレイヤーを追加する以外は、Androidアプリケーションで通常どおりに状態を処理する方法(onPause()で保持したいデータをそのまま残しておき、 onCreate()など)。 – Nailuj
私は試してみる:) OrmLiteライブラリに言及してくれてありがとう。また、 "ポータブルな" ORマッパーがあるのを知らなかったが、ファイルシステムにデータを格納する方が好きだし、外部のsd-カード。しかし、私は大規模なオブジェクトセットのシリアル化/逆シリアル化がこの種のデバイスで高速であるかどうかはわかりません...私はそれを試してみて、何が起こるか見てみましょう:) –