在我的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();
}
}
当我每次打开连接下载文件时,我只想打开连接一次,当应用程序结束下载所有文件时,必须断开连接。有没有办法做到这一点。
感谢任何关注此事的人。
答案 0 :(得分:1)
Http连接是“无状态的”,所以没有像SSH连接那样保持打开的连接; 因此,您下载的每个图像都将在单独的请求/连接中完成。 (那也是网络浏览器这样做的。)
另外,为什么要在单独的try / catch中创建URL? 这没有任何意义,因为如果您未能创建URL对象,则在尝试打开连接时将获得空指针。