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回だけ開きたいと思い、アプリケーションがすべてのファイルのダウンロードを終了すると、接続を切断する必要があります。これを行う方法はありますか。

これに注目してくれた人に感謝します。

4

1 に答える 1

1

HTTP 接続は「ステートレス」であるため、SSH 接続のように開いたままにしておく接続はありません。したがって、ダウンロードする各画像は、個別の要求/接続で行われます。(これは Web ブラウザでも実行されます)。

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

于 2012-05-11T08:13:33.950 に答える