私は Android アプリケーションを開発しています。大量の JSON データをストリームでフェッチします。Web サービスの呼び出しは問題ありませんが、少し問題があります。私の古いバージョンでは、ストリームの読み取りに Gson を使用していましたが、データベースにデータを挿入しようとしましたが、パフォーマンス以外は問題なく問題ありませんでした。そのため、データをロードするアプローチを変更しようとしましchar[]
た。最初にデータを読み取ってからデータベースに挿入しようとしています。
これは私の新しいコードです:
HttpEntity responseEntity = response.getEntity();
final int contentLength = (int) responseEntity.getContentLength();
InputStream stream = responseEntity.getContent();
InputStreamReader reader = new InputStreamReader(stream);
int readCount = 10 * 1024;
int hasread = 0;
char[] buffer = new char[contentLength];
int mustWrite = 0;
int hasread2 = 0;
while (hasread < contentLength) {
// problem is here
hasread += reader.read(buffer, hasread, contentLength - hasread);
}
Reader reader2 = new CharArrayReader(buffer);
問題は、リーダーが正しく読み取りを開始することですが、ストリームの終わり近くで、hasread
変数の値が1
増加するのではなく減少することです。私には非常に奇妙で、while
ループが終了しません。このコードの何が問題になっていますか?