[解決済み] Android 入力ストリームからの読み取りを効率的に行う
2022-04-26 13:33:24
質問
作っているandroidアプリのWebサイトにHTTP getリクエストをしています。
DefaultHttpClientを使用し、HttpGetを使用してリクエストを発行しています。エンティティ・レスポンスを取得し、そこからInputStreamオブジェクトを取得して、ページのhtmlを取得しています。
そして、次のようにして返信を循環させています。
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
String x = "";
x = r.readLine();
String total = "";
while(x!= null){
total += x;
x = r.readLine();
}
しかし、これでは恐ろしく遅い。
これって非効率的なんでしょうか?大きなウェブページを読み込んでいるわけではないのですが......。 www.cokezone.co.uk ので、ファイルサイズは大きくありません。何か良い方法はないでしょうか?
ありがとうございます
アンディ
解決方法は?
あなたのコードの問題は、たくさんの重い
String
オブジェクトを作成し、その内容をコピーして操作を実行します。その代わりに
StringBuilder
を作成しないようにするため、新しい
String
オブジェクトを追加し、char 配列をコピーしないようにします。あなたの場合の実装は、次のようなものでしょう。
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
for (String line; (line = r.readLine()) != null; ) {
total.append(line).append('\n');
}
これで
total
に変換することなく
String
として必要な場合、その結果は
String
を追加するだけです。
String result = total.toString();
もっとうまく説明しよう・・・。
-
a += b
(またはa = a + b
を指定します。a
とb
が文字列の場合 両方ともa
そしてb
を新しいオブジェクトにコピーしていることに注意してください。a
を含む。 蓄積されたString
) のコピーを、各反復で行っています。 -
a.append(b)
ここでa
はStringBuilder
を直接追加します。b
の内容をa
というように、繰り返しの度に蓄積された文字列をコピーしないようにします。
関連
-
java の例外が発生しました java
-
javaで非静的な解を静的な参照にすることができない
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] ngModel' は 'input' の既知のプロパティではないため、バインドできません。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
jd-gui Java Exceptionが発生しました。
-
javaの模造品QQ WeChatのチャットルーム
-
プロローグでのコンテンツは禁止されています
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
javaでよく使われる英単語
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
IDEA パッケージステートメントの欠落
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について