2012-05-11 33 views
0

私のアンドロイドアプリケーションでは、イメージをダウンロードするために永続的な接続を作成しようとしています。私はそれがダウンロード用の接続を開く必要があるたびに、私は接続に一つだけの時間を開きたいファイルをダウンロードし起動して、すべてをダウンロードするアプリケーションのエンドがファイルするとき、接続が切断されなければならない場合にはここに私のコード永続的接続を作成する

public class PersActivity extends Activity { 
    ImageView img; 
    String imageUrl="http://192.168.1.4/JRec/"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     Button bt3= (Button)findViewById(R.id.download); 
     bt3.setOnClickListener(getImgListener); 
     img = (ImageView)findViewById(R.id.image); 
    } 

    View.OnClickListener getImgListener = new View.OnClickListener() 
    { 

     @Override 
     public void onClick(View view) { 


      for (int i = 0; i<4;i++){ 
      downloadFile(i,imageUrl+"images/"+i+".png"); 

      } 


     } 

    }; 

    Bitmap bmImg; 
    void downloadFile(int i, String fileUrl){ 

     URL myFileUrl =null; 
     try { 
      myFileUrl= new URL(fileUrl); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     try { 

      System.out.println("Opening connection"); 
      HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection(); 
      conn.setRequestProperty("Connection", "keep-alive"); 
      conn.setDoInput(true); 
      conn.connect(); 


      System.out.println("Downloading"+fileUrl); 
      InputStream is = conn.getInputStream(); 

      bmImg = BitmapFactory.decodeStream(is); 
      img.setImageBitmap(bmImg); 

      if (i ==3){ 
       System.out.println("Disconnected"); 
       conn.disconnect(); 
      } 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

です。これを行う方法はありますか?

ありがとうございました。

答えて

1

HTTP接続は「ステートレス」なので、SSH接続のように開いたままにしておくことはできません。 あなたがダウンロードした各画像は別々のリクエスト/接続で処理されます。 (それはウェブブラウザでもできます)。

なぜ、URLの作成を別のtry/catchに入れましたか? URLオブジェクトの作成に失敗すると、接続を開こうとするときにnullポインタが取得されるため、意味がありません。

関連する問題