2016-04-13 4 views
1

私は、Volleyを使用してJSONを通じてデータベースからデータを解析する必要があるアンドロイドアプリケーションを構築しています。私はテーブル内に17,000+ rowsを持っています。テーブルからJSON経由ですべての行をフェッチする必要があり、SQLiteに格納する必要があります。ダウンロードしたユーザーは、すべての行のフィールドを変更できます。フィールドが変更された後。すべてのデータをサーバーに送り返す必要があります(同期するなど)。大きなデータをJSONからVolley in androidを使用してダウンロードしてください。

私の問題は、この巨大なデータを私のアプリケーションにダウンロードしようとした場合です。それは墜落している。このアプリを動作させるために私ができる方法はありますか?また、ボレーを使用してサーバーから膨大なデータを解析する方法を教えてください。

+0

に同期するための
3メイクサービスはormliteデータベース内のデータとストアを解析するためのクラッシュログ –

+1

の1-使用Gsonを投稿してください。 \t \t 2 - データベーステーブルを変更した後、サーバーとの同期アダプタを使用して、テーブルの行バイ行を同期させる必要があります。 \t \tサーバに同期するための3-Make Service –

+0

メモリ内バイト配列のないファイルに直接データをダウンロードすることを検討してください。この回答を参照してください:http://stackoverflow.com/questions/26523191/volley-download-directly-to-file-no-in-memory-byte-array –

答えて

2

1データを解析してormliteデータベースに格納するためにGsonを使用します。
2 - データベーステーブルを変更した後、サーバとの同期アダプタを使用して、テーブルの行バイ行を同期させる必要があります。サーバー

0

アプリケーションマニフェストでlargheapを有効にします。 これを使用する方法を知るにはlinkを使用してください

大きなファイルをダウンロードするには改造を使用しています。 大きなデータの場合はjsonreaderを使用して解析してください。

+0

私はそれを試して、それは働いた。私の要求に従うためのよりよい方法があるかどうか教えてもらえますか? ??? – IndependentDev

+0

AsyncTaskLoaderを実際に改造して使用してください:) –

0

OutOfMemoryExceptionが表示されていると思いますか? 膨大なデータをページングして、100から1000まで1000をサーバーから取り出し、sqliteに直接格納することができます。

+0

大きなヒープを有効にした後。今私はメモリ例外が出てきています。文字列からjson配列へのデータの解析中 – IndependentDev

+0

大きなヒープを有効にするのではなく、ページングを使用します。 –

+0

私は1つの参照リンクを与えることができます – IndependentDev

3

timeOutErrorのためにクラッシュすると思います。ボレーが大量のデータを解析する必要がある場合は、ボレーリクエストのタイムアウトを設定する必要があります。デフォルトのタイムアウトは2500msです。これを10000ms以上に設定すると、元のタイムアウトに使用できます。

strReq.setRetryPolicy(new DefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

それはあなたが割り当てられたすべての時間を消費しませんが、すべてのデータがtimeoutErrorがあなたのクラッシュを与えることはありませんが、onErrorResponseが呼び出されます

、作成してくださいフェッチされ、一度切断されます挿入操作を行う前に、挿入しようとしているテーブルが作成されていることを確認してください。

+0

私は既に30000にしましたが、それでも同じ問題を返しました... – IndependentDev

+0

あなたはクラッシュログを投稿してください。 – user1799171

0

使用しているサーバー技術のタイプがわかりません。 17K +のデータをダウンロードし、同じ金額をアップロードすることは技術の最適な利用ではないと思います。

データ同期と解析に関する負担を軽減する技術を試してみてください。私はあなたがGoogleによってFirebaseを認識していると確信しています。この場合の解決策の1つです。

この場合、ご質問が誤解されているかどうかをお知らせください。

関連する問題