2

SQL データベースから Android デバイスに画像をダウンロードしています。ストリームを開くのに非常に時間がかかることを除いて、すべてがうまく機能します (ダウンロードする画像がない場合でも)。実際のダウンロードが開始されるまでに約 5 秒かかります。ここに私のコードスニペットがあります:

URL url = new URL(sUrl[0]);
URLConnection connection = url.openConnection();
connection.connect();

int fileLength = connection.getContentLength();

//input = connection.getInputStream();
InputStream input = new BufferedInputStream(url.openStream());


File file = new File(
        Environment
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
        "MyCameraApp" + "/testpic.jpg");
OutputStream output = new FileOutputStream(file);
byte data[] = new byte[1024];

//---blabla progressbar update etc..

InputStream input = new BufferedInputStream(url.openStream());は問題を示します。物事をスピードアップする方法についてのアイデアはありますか?

4

3 に答える 3

4

これが、実際の TCP 接続が作成されるポイントです。これはネットワークの問題であり、コーディングの問題ではありません。それを修正するためにコードでできることは何もありません。

于 2012-06-12T22:00:41.050 に答える
3

このコードを使用して、URL からビットマップを取得します。:)

Bitmap bitmap = null;
    URL imageUrl = new URL(url);
    HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
    conn.setConnectTimeout(30000);
    conn.setReadTimeout(30000);
    InputStream is = conn.getInputStream();
    OutputStream os = new FileOutputStream(f);

try
{
   byte[] bytes=new byte[1024];
   for(;;)
   {
      int count=is.read(bytes, 0, 1024);
      if(count==-1)
         break;
      os.write(bytes, 0, count);
    }
 }
 catch(Exception ex){}
os.close();
bitmap = decodeFile(f); 
于 2012-06-12T22:02:25.297 に答える
-1

url.openStream()を作成するときに呼び出しInputStreamていますが、その前に新しい接続を作成して を呼び出していconnection.connect()ます。

Android JavaDoc から: openStream()は「」と同等ですopenConnection().getInputStream(types)

http://developer.android.com/reference/java/net/URL.html#openStream ()

connection.getInputStream()要約すると、を初期化するときに呼び出す必要があると思いますInputStream

于 2012-10-02T10:38:31.883 に答える