2012-05-11 179 views
0

在我的Android應用程序中,我嘗試創建持久連接以下載圖像。這裏是我的代碼創建持久連接

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對象,當你嘗試打開連接時,你會得到一個空指針。