2017-12-02 13 views
-2

この問題は、アプリがフリーズするのを引き起こしています。スキップフレーム!アプリケーションがメインスレッドであまりにも多くの作業を行っている可能性があります。

imageViewとtextViewを含むlistViewを読み込むためにローダーを使用しています。

ローダーがJSONを解析して、タイトルと同じようにオブジェクトの画像URLを抽出すると、listViewの読み込みが開始されます。

フレーム内をスキップする問題を引き起こす可能性のあるコードを少し調べました。ピクチャを表示して、リストビューを行うと、遅延が発生します。

私はアプリに写真を提示するために使用するコードを掲示してくれます。もし誰かがそれがより良くなり、実際に私のコードが悪いのであれば教えてもらえますか?

ImageView album = (ImageView) listItemView.findViewById(R.id.albumID); 
    StrictMode.ThreadPolicy policy = new 
    StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    try { 

     Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(currentSong.getImage_url()).getContent()); 


     album.setImageBitmap(bitmap); 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

答えて

0

なしの神ああ、神様ああ、神様ああ、神様ああ。お願いします。いいえ

あなたはAndroidのルールとガイドラインの束に反対しています。

1)99.99%の時間で、ThreadPolicyを変更する必要はありません。だから、それが何をしているのか正確に分からない限り、しないでください。
2)UIスレッドでAPI呼び出しを行ったことはありません。これがアプリがフリーズしている理由です。

非同期呼び出しを行い、イメージデータを取得し、それをImageViewにロードする必要があります。

これを行うことができ、すべてをスムーズに処理できるライブラリがたくさんあります。 「グライド」、「ユニバーサル画像ローダー」、「ピカソ」をグーグルで試してみてください。

現在、イメージの読み込み中にUIアップデートを処理しているスレッドをロックしています。だから画像がロードされている間、スクロール、タッチなどを含むUIで何もできません。

+0

私はローダーを使用すると、onLoadFinished()呼び出し時にリストビューを更新するということですか? –

関連する問題

 関連する問題