创建持久连接

时间:2012-05-11 07:58:06

标签: java android

在我的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 个答案:

答案 0 :(得分:1)

Http连接是“无状态的”,所以没有像SSH连接那样保持打开的连接; 因此,您下载的每个图像都将在单独的请求/连接中完成。 (那也是网络浏览器这样做的。)

另外,为什么要在单独的try / catch中创建URL? 这没有任何意义,因为如果您未能创建URL对象,则在尝试打开连接时将获得空指针。