0

私は画像をロードするための古典的なAsyncTaskを持っています:

private class DownloadImageTask extends AsyncTask<String,Void,Bitmap> {

    Bitmap  bitmap = null;

    @Override
    protected Bitmap doInBackground(String... str) {
        try{   

            InputStream in = new java.net.URL(picture).openStream();
            bitmap = BitmapFactory.decodeStream(new SanInputStream(in));
            //viewPicture.setImageBitmap(bitmap);
            viewPicture.setBackgroundDrawable(new BitmapDrawable(bitmap));


        }
        catch(Exception e){
            e.printStackTrace();
        }
        return bitmap;
    }
}

しかし、画像の読み込みは長すぎます。このアクティビティを開始すると、画像以外のすべてが読み込まれ、1秒待つと表示されます。何が問題ですか?

4

2 に答える 2

1

シンプル...リソースURLへの接続を開き、必要なすべてのバイトをダウンロードするには時間がかかるためです。さらに、パフォーマンスはインターネット接続の速度によっても異なる場合があります。

于 2012-05-15T06:38:15.073 に答える
1
viewPicture.setBackgroundDrawable(new BitmapDrawable(bitmap));

UIスレッドのAsyncTaskのonPostExecuteメソッドで実行する必要があります。

また、使用するストリーム(!nullの場合)を、try/catchの素敵なfinallyブロックで閉じます。

そして、時間を気にしないでください、それは行く方法です。

于 2012-05-15T06:38:26.003 に答える