마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서버로 http요청 질문드립니다.

0 추천

URL을 이용해서 서버로부터 사진을 가져오려고 합니다. 

 

현재 코드는 ArrayList에 URL을 저장해놓고

한번에 하나씩 http연결을 해서.. 사진을 가져오는 것입니다.

즉.. Arraylist 사이즈가 10 (url이 10개)라면

http 요청을 10번을 보냅니다.... 

뭔가 비효율적인거같아서 코드를 수정하려 합니다.

Arraylist에 있는 url을 한번에 사진으로 받을 수 있을까요..?

 

public class Bitmap_GetFromURL extends Thread{
    // URL_ArrayList ul = URL_ArrayList.getInstance();

    BibleInfo_ArrayList ul = BibleInfo_ArrayList.getBible_ArrayList();
    BibleInfo_Array_BitmapConverted ul2 = BibleInfo_Array_BitmapConverted.getBible_ArrayList();

    //URL로부터 얻은 bitmap 을 저장시킬 bitmap array


    public void run(){
        getBitmap();
    }

    private void getBitmap(){
        HttpURLConnection conn;
        Bitmap bitmap;
        BibleInfo_FromServer cur_bible;
        Iterator<BibleInfo_FromServer> it = ul.iterator();
        // URL_ArrayList 하나하나에 대해서 반복문에서 http연결을 하고 bitmap을 가져옴.
        int i=0;
        while(it.hasNext()) {

            try {
                //url제공.
                cur_bible = it.next();
                URL url = new URL(cur_bible.picture);

                //    Log.d("메시지", "url 얻는 부분에서 cur_bible.picture = "+ cur_bible.picture);
                conn = (HttpURLConnection)url.openConnection();
                conn.setDoInput(true);
                conn.connect();

                InputStream input = conn.getInputStream();
                bitmap = BitmapFactory.decodeStream(input);

                //가져온 Bitmap들을 Bitmap_ArrayList에 저장함.
                cur_bible.bitmap = bitmap;
                ul2.add(cur_bible);
            }
            catch(Exception e){
            }
        }

 

 

 

 

익명사용자 님이 2016년 10월 17일 질문

1개의 답변

0 추천
모바일에서 서버와의 통신은 웬만하면 비동기 방식으로 하셔야 합니다. 저렇게 루프를 돌려서 가져오는 것은 좋은 방법이 아닙니다. 백그라운드 작업으로 서버에 요청을 하고 나서 서버에서 처리가 끝나면 콜백을 통해서 결과를 받도록 해야 합니다. 그리고 텍스트가 아닌 이미지의 경우는 scaling, cache 등등 처리할 작업이 많기 때문에 직접 구현하시기 보다는 검증된 라이브러리를 사용하세요. Glide나 Picasso 같은 라이브러리를 많이들 사용합니다.
spark (227,930 포인트) 님이 2016년 10월 17일 답변
...