메뉴 건너뛰기

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

이전 포스팅과 마찬가지로 네트워크를 통한 작업임으로 주의해야할 사항이 2가지 있다.



1. 안드로이드는 네트워크 작업시 "백그라운드 스레드"로 동작을 시켜야한다.(대용량 데이터를 네트워크로 가져오는 동안 다른 작업은 할 수 없게 될 수 있음으로...)

2. 백그라운드 스레드에서는 메인 뷰 화면을 제어할 수 없다. 따라서 가져온 이미지를 백그라운드 스레드에서 적용할 수가 

없다. 따라서, 핸들러에게 대신 요청을 해주어야 한다.

3. 인터넷을 사용해야 함으로 manifest에 인터넷 사용 권한을 추가해 주어야 한다.



라는 사항을 유의하고 작업하면 그 외의 부분은 이전과 거의 유사하다.

나머지는 코드의 주석을 통해 설명하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.example.kscs.androidspringconnection1;
 
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
 
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
 
public class ImageDownActivity extends AppCompatActivity
                                implements Runnable{
 
    // 1. 변수 선언
    Button button1;
    ImageView img1;
    Bitmap bitmap; // 비트맵 객체
    // 메인 스레드와 백그라운드 스레드 간의 통신
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            // 서버에서 받아온 이미지를 핸들러를 경유해 이미지뷰에 비트맵 리소스 연결
            img1.setImageBitmap(bitmap);
        }
    };
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image_down);
 
        // 2. 위젯 연결
        button1 = (Button)findViewById(R.id.button1);
        img1 = (ImageView)findViewById(R.id.img1);
 
        // 3. 서버에 이미지를 하나 넣어놓자.
        // /resources/images/이미지.png 처럼 올려 놓자.
        // 그냥... 환경설정에 자원 경로로 등록 된 곳에 올리면 된다.
 
        // 4. 버튼 클릭 이벤트
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 네트워크 연결 작업시 이미지 가져오는 것도 대량의 데이터임으로
                // 반드시!! 백그라운드 스레드에서 작업해야한다.
                // 또한, 역시 마찬가지로 백그라운드 스레드는 메인뷰 화면은 제어할 수 없어
                // 핸들러에게 부탁해서 작업해야함!
                // + 인터넷 접속 권한 필요!(MAINFEST에 추가)
 
                // 백그라운드 스레드 생성
                Thread th = new Thread(ImageDownActivity.this);
                // 동작 수행
                th.start();
            }
        });
 
    }
 
    // 백그라운드 스레드
    @Override
    public void run() {
        URL url = null;
        try{
            // 스트링 주소를 url 형식으로 변환
            url = new URL("http://192.168.0.127/resources/images/like1.png");
            // url에 접속 시도
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            conn.connect();
            // 스트림 생성
            InputStream is = conn.getInputStream();
            // 스트림에서 받은 데이터를 비트맵 변환
            // 인터넷에서 이미지 가져올 때는 Bitmap을 사용해야함
            bitmap = BitmapFactory.decodeStream(is);
 
            // 핸들러에게 화면 갱신을 요청한다.
            handler.sendEmptyMessage(0);
            // 연결 종료
            is.close();
            conn.disconnect();
 
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

List of Articles
번호 제목 날짜 조회 수
38 AJAX 통신시 컨트롤러에서 한글 문자열을 리턴해야하는 경우 인코딩 문제 처리 2018.07.04 2599
37 JAVA Crawling(크로울링) 기본([펌]http://partnerjun.tistory.com/guestbook) file 2018.07.04 5110
36 Java was started but returned exit code=13 - 이클립스 실행시 에러 file 2021.03.31 152
35 Nutch 0.9 를 이용하여 한글 검색하기 2016.12.08 5928
34 play framework + 이클립스 초간단 개발환경 구축법 2016.12.08 12433
33 solr적용시 사용법 2016.12.08 5582
32 Spring AOP(Aspect Oriented Programming) 에서의 용어 file 2016.12.08 5176
31 Spring Framework 개요 2016.12.08 5339
30 Spring Security Basic 인증 비활성화 설정 file 2016.08.18 5556
29 Spring 개발을 위한 Eclipse 개발 환경 구성하기 file 2016.12.06 5431
28 [패스트캣]1. 시작하기 - 설치 file 2016.12.08 5982
27 [펌]자바 Crawling(크로울링) Ajax로 요청하는 것 긁어오기 file 2018.07.04 2898
26 [펌]자바 Crawling(크로울링) 로그인 해 긁어오기 file 2018.07.04 6014
25 검색엔진 (1) - 검색엔진의 이해 2016.12.08 6032
24 검색엔진 (2) - 라이브러리: Lucene, Solr, Elasticsearch 2016.12.08 6228
23 루씬 기본적인 검색 엔진 - 샘플 예제 file 2016.12.08 7769
22 스프링 2.5.2 설치및 HelloWorld 출력하기 file 2016.12.06 5836
21 스프링 AOP의 주요 용어 file 2016.08.18 5829
20 스프링 Bean 객체의 초기화 및 소멸시 호출 메서드 file 2016.08.18 4996
19 스프링 XML 설정에서 자바 설정 Import하기 file 2016.08.18 5071
Board Pagination Prev 1 2 Next
/ 2

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved