SlideShare a Scribd company logo
Android Network
제작자 : 쿠디(cooddy)
제작자 블로그
Tistory Blog : http://cooddy.tistory.com/
네트워킹 상태 조회
• ConnectivityManager Class
• 정의 : 안드로이드에서 네트워크의 형재 상태에 대한 정보를 반환하는 객체
• 기능
• 네트워크 연결 상태를 감시
• 만약 네트워크 연결 상태가 변경되면 다른 애플리케이션에 방송
• 또 하나의 네트워크 연결이 끊기면 다른 네트워크로 연결을 시도
• getNetworkInfo() Func
• 정의 : 현재 어떤 네트워크가 사용가능한지를 파악
• getNetworkInfo() 메소드를 호출할 때는 정보를 얻고 싶은 네트워크를 지정해야 함
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info1 = manager.getNetWorkInfo(ConnectivityManager.TYPE_WIFI);
String status = “” + info1.isAvailable() + info1.isConnected();
display.setText(status);
네트워크 지정 상수(getNetworkInfo(parameter))
• 네트워크 종류
• TYPE_MOBILE : default 모바일 네트워크
• TYPE_MOBILE_DUN : DUN방식의 모바일 네트워크
• TYPE_MOBILE_HIPRI : High Priority 모바일 네트워크
• TYPE_MOBILE_MMS : MMS 방식 모바일 네트워크
• TYPE_MOBILE_SUPL : SUPL 방식 모바일 네트워크
• TYPE_WIFI : default WIFI 네트워크
• TYPE_WIMAX : default WIMAX 네트워크
• TYPE_BLUETOOTH : 블루투스 네트워크
네트워크 상태 반환 함수(getNetworkInfo 객체)
• 네트워크 상태 반환 함수
• DetailedState getDetailedState() : 네트워크의 상세한 상태를 보고
• String getExtraInfo() : 부가적인 정보를 보고
• String getTypeName() : “WIFI”나 “MOBILE”과 같은 문자열 이름을 반환
• Boolean isAvailable() : 네트워크가 사용 가능한지를 보고
• Boolean isConnected() : 네트워크가 연결되어 있는지를 보고
• Boolean isConnectedConnecting() : 네트워크가 연결되어 있는지 또는 연결 중인지를 보고
• Boolean isRoaming() : 현재 로밍 상태인지를 보고
• String toString() : 네트워크의 전체 상태를 문자열로 보고
코드 소스로 보기
• [CODE]
웹(Web)에서 파일 다운로드
• HttpURLConnection(java.net Package)
• http 프로토콜을 이용하여서 네트워크에서 파일 또는 웹페이지를 읽을 때 사용하는 기본 클래스
• 웹 서버로 부터 파일을 읽을 시 주의점
• 메인 스레드에서 직접 파일을 다운로드하면 예외(Exception)이 발생
• “NetworkOnMainThreadException”이 발생
• StrictMode : 네트워크에서 다운로드하는 것과 같은 시간이 많이 걸리는 작업은 메인 스레드에서 하면 안된다는 의미
•  별도의 스레드를 생성하고 여기에서 파일을 다운로드 해야 함
• AsyncTask 객체
• 새로운 스레드를 생성하는 방법 중의 하나
• 객체로부터 상속하는 AsyncTask는 사용하고자 하는 type을 지정해주어야 함
• Params : background 작업 시 필요한 data의 type 지정
• Progress : background 작업 중 진행상화을 표현하는데 사용되는 data를 위한 type 지정
• Result : background 작업 완료 후 리턴 할 data의 type 지정
AsyncTask 객체
• Ex] private class ‘지정 객체명’ extends AsyncTask<Params, Progress, Result>{…….}
AsyncTask:execute(parameter)
리턴 AsyncTask:doInBackground(parameter)
AsyncTask:publishProgress(parameter)
AsyncTask:onProgressUpdate(parameter)
AsyncTask:onPostExecute(parameter)
AsyncTask 객체 callback 함수
• Callback 함수들은 상황에 맞게 Overriding 해야 함
• protected void onPreExecute() : Background 작업이 시작되지마자 실행될 코드를 구현
• protected abstract Result doInBackground(Params… params) : Background에서 수행할 작업을 구현
• execute() 함수에 입력된 인자들을 전달 받음
• void onProgressUpdate(Progress… values) : publishProgress(…) 메소드 호출의 callback으로 background 작업 진행
상황을 update하도록 구현
• void onPostExecute(Result result) : doInBackground(…)가 리턴하는 값을 바탕으로 작업 결과를 표현하도록 구현
• void onCancelled() : AsyncTask:cancel(Boolean)메소드를 사용해 AsyncTask인스턴스의 background 작업을 정지 또는
실행금지 시켰을 때 실행되는 콜백
AsyncTask Cycle
웹(Web)에서 파일 다운로드
• [CODE]
웹(Web)에서 파일 다운로드
• [CODE]
XML 처리
• 안드로이드에서 XML 처리가 필요한 경우가 바로 서버에서 제공하는 데이터를 읽어 와서 스마트
폰의 화면에 표시하는 경우
• XML은 워낙 많이 사용되므로 이것을 전문적으로 처리해주는 파서(parser)들이 존재
• Parser들 : DOM, SAX, PullParser등
파서 특징
DOM
(Document Object Model)
엘리먼트들을 한 번에 트리 구조로 파싱하여 메모리에 저장
언제든지 원하는 엘리먼트에 대한 정보를 얻을 수 있음
메모리는 많이 차지하는 단점
SAX
(Simple API for XML)
라인 단위로 파싱하기 때문에 메모리의 소모가 적음
하지만 지나쳐간 엘리먼트들의 정보를 얻고 싶으면 다시 파싱해야 함
PullParser SAX와 유사하지만 원하는 부분까지만 파싱이 가능
XML DOM 기초
• DOM은 W3C의 표준으로 XML 문서에 접근하고 처리하는 표준적인 방법을 정의
• DOM은 XML 문서를 트리 구조로 표현
• DOM은 문서 엘리먼트의 객체(Object), 특징(Property), 메소드(interface)를 정의
• DOM은 XML 엘리먼트를 구하고 변경하고 추가, 삭제하는 방법의 표준
• DOM에서 XML 문서의 모든 것은 노드(node)라고 불림
• 전체 문서는 도큐먼트 노드(Document node)라고 부름
• 모든 XML 엘리먼트는 엘리먼트 노드(element node)
• XML 엘리먼트 안의 텍스트는 텍스트 노드(text node)
• 모든 어트리뷰트(attribute)는 어트리뷰트 노드(attribute node)
XML DOM 예
• <?xml version=“1.0” encoding=“ISO-8891-1”?>
<restaurant>
<food category=“Korean Food”>
<title lang=“kor”>Fantasy of Kimchi</title>
<chef>cooddy</chef>
<year>2016</year>
<price>15,000</price>
</food>
<food category=“English Food”>
<title lang=“en”>Fish & chips</title>
<chef>Sammy</chef>
<year>2014</year>
<price>20,000</price>
</food>
</restaurant>
루트 노드
엘리멘트 노드
텍스트 노드
DOM XML 파서(Parser) 생성
• javax.xml.parsers.DocumentBuilderFactory 객체를 이용하면 자바 DOM xml 파서 생성 가능
• parse()함수 : parse()함수 호출시 XML문서가 DOM 트리 구조로 변환
• DocumentBuilder 객체 : DOM 파서(Parser)
DocumentBuilder builder = null;
try
{
Document document = builder.parse(new FileInputStream(“data//text.xml”));
}
catch(SAXException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}

More Related Content

PDF
DDD Repository
PPTX
[스프링 스터디 3일차] 데이터엑세스기술
PDF
Objective-C Runtime Programming Guide
PDF
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
PPTX
4-2. ajax
PPTX
4-3. jquery
PPTX
5-5. html5 connectivity
PDF
2014년 02월 XE세미나 XE서버서능개선
DDD Repository
[스프링 스터디 3일차] 데이터엑세스기술
Objective-C Runtime Programming Guide
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
4-2. ajax
4-3. jquery
5-5. html5 connectivity
2014년 02월 XE세미나 XE서버서능개선

What's hot (20)

PDF
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
ODP
Ajax 기술문서 - 김연수
PPTX
RequireJS를 이용한 모듈관리.
PPTX
토비의 스프링 - DI
PDF
Openstack Swift overview
PDF
04 자바 네트워크
PDF
02 realm 모델 &amp; 관계
PDF
Hadoop io part2
PDF
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
PPTX
2. 엔티티 매핑(entity mapping) 2 3 롬복(lombok)소개-1
PDF
자바채팅 다중
PDF
Cluster - spark
PDF
게이트단의 보안
PDF
[162] jpa와 모던 자바 데이터 저장 기술
PDF
Java nio
PDF
그림으로 공부하는 오라클 구조
PDF
Anatomy of Realm
PDF
Hyperledger farbric build your first network install and analysis
PDF
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
PDF
JSP 프로그래밍 #03 서블릿
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
Ajax 기술문서 - 김연수
RequireJS를 이용한 모듈관리.
토비의 스프링 - DI
Openstack Swift overview
04 자바 네트워크
02 realm 모델 &amp; 관계
Hadoop io part2
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
2. 엔티티 매핑(entity mapping) 2 3 롬복(lombok)소개-1
자바채팅 다중
Cluster - spark
게이트단의 보안
[162] jpa와 모던 자바 데이터 저장 기술
Java nio
그림으로 공부하는 오라클 구조
Anatomy of Realm
Hyperledger farbric build your first network install and analysis
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
JSP 프로그래밍 #03 서블릿
Ad

Similar to Android Network (20)

PPTX
안드로이드 오픈소스 어플리케이션 블록
PPTX
Android xml parsing
PDF
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
PDF
Web server page_ed10
PDF
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
PDF
[강의자료]+1시간만에+끝나는+직장인+코딩+용어+해설_ver1.2.pdf
PDF
[Hello world 오픈세미나]open api client개발
PDF
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
PDF
웹개발자가 알아야할 기술
PDF
Learning HTML5
PDF
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
PPTX
Ksug 세미나 (윤성준) (20121208)
PDF
WoO 2012-Web 서비스 기술
PDF
Massive service basic
PPTX
Html5
PDF
01.모바일 프레임워크 이론
PDF
세션3 node.js의 의미와 자바의 대안
PPTX
Golang Project Guide from A to Z: From Feature Development to Enterprise Appl...
PDF
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
PDF
20131217 html5
안드로이드 오픈소스 어플리케이션 블록
Android xml parsing
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
Web server page_ed10
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
[강의자료]+1시간만에+끝나는+직장인+코딩+용어+해설_ver1.2.pdf
[Hello world 오픈세미나]open api client개발
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
웹개발자가 알아야할 기술
Learning HTML5
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
Ksug 세미나 (윤성준) (20121208)
WoO 2012-Web 서비스 기술
Massive service basic
Html5
01.모바일 프레임워크 이론
세션3 node.js의 의미와 자바의 대안
Golang Project Guide from A to Z: From Feature Development to Enterprise Appl...
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
20131217 html5
Ad

Android Network

  • 1. Android Network 제작자 : 쿠디(cooddy) 제작자 블로그 Tistory Blog : http://cooddy.tistory.com/
  • 2. 네트워킹 상태 조회 • ConnectivityManager Class • 정의 : 안드로이드에서 네트워크의 형재 상태에 대한 정보를 반환하는 객체 • 기능 • 네트워크 연결 상태를 감시 • 만약 네트워크 연결 상태가 변경되면 다른 애플리케이션에 방송 • 또 하나의 네트워크 연결이 끊기면 다른 네트워크로 연결을 시도 • getNetworkInfo() Func • 정의 : 현재 어떤 네트워크가 사용가능한지를 파악 • getNetworkInfo() 메소드를 호출할 때는 정보를 얻고 싶은 네트워크를 지정해야 함 ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info1 = manager.getNetWorkInfo(ConnectivityManager.TYPE_WIFI); String status = “” + info1.isAvailable() + info1.isConnected(); display.setText(status);
  • 3. 네트워크 지정 상수(getNetworkInfo(parameter)) • 네트워크 종류 • TYPE_MOBILE : default 모바일 네트워크 • TYPE_MOBILE_DUN : DUN방식의 모바일 네트워크 • TYPE_MOBILE_HIPRI : High Priority 모바일 네트워크 • TYPE_MOBILE_MMS : MMS 방식 모바일 네트워크 • TYPE_MOBILE_SUPL : SUPL 방식 모바일 네트워크 • TYPE_WIFI : default WIFI 네트워크 • TYPE_WIMAX : default WIMAX 네트워크 • TYPE_BLUETOOTH : 블루투스 네트워크
  • 4. 네트워크 상태 반환 함수(getNetworkInfo 객체) • 네트워크 상태 반환 함수 • DetailedState getDetailedState() : 네트워크의 상세한 상태를 보고 • String getExtraInfo() : 부가적인 정보를 보고 • String getTypeName() : “WIFI”나 “MOBILE”과 같은 문자열 이름을 반환 • Boolean isAvailable() : 네트워크가 사용 가능한지를 보고 • Boolean isConnected() : 네트워크가 연결되어 있는지를 보고 • Boolean isConnectedConnecting() : 네트워크가 연결되어 있는지 또는 연결 중인지를 보고 • Boolean isRoaming() : 현재 로밍 상태인지를 보고 • String toString() : 네트워크의 전체 상태를 문자열로 보고
  • 6. 웹(Web)에서 파일 다운로드 • HttpURLConnection(java.net Package) • http 프로토콜을 이용하여서 네트워크에서 파일 또는 웹페이지를 읽을 때 사용하는 기본 클래스 • 웹 서버로 부터 파일을 읽을 시 주의점 • 메인 스레드에서 직접 파일을 다운로드하면 예외(Exception)이 발생 • “NetworkOnMainThreadException”이 발생 • StrictMode : 네트워크에서 다운로드하는 것과 같은 시간이 많이 걸리는 작업은 메인 스레드에서 하면 안된다는 의미 •  별도의 스레드를 생성하고 여기에서 파일을 다운로드 해야 함 • AsyncTask 객체 • 새로운 스레드를 생성하는 방법 중의 하나 • 객체로부터 상속하는 AsyncTask는 사용하고자 하는 type을 지정해주어야 함 • Params : background 작업 시 필요한 data의 type 지정 • Progress : background 작업 중 진행상화을 표현하는데 사용되는 data를 위한 type 지정 • Result : background 작업 완료 후 리턴 할 data의 type 지정
  • 7. AsyncTask 객체 • Ex] private class ‘지정 객체명’ extends AsyncTask<Params, Progress, Result>{…….} AsyncTask:execute(parameter) 리턴 AsyncTask:doInBackground(parameter) AsyncTask:publishProgress(parameter) AsyncTask:onProgressUpdate(parameter) AsyncTask:onPostExecute(parameter)
  • 8. AsyncTask 객체 callback 함수 • Callback 함수들은 상황에 맞게 Overriding 해야 함 • protected void onPreExecute() : Background 작업이 시작되지마자 실행될 코드를 구현 • protected abstract Result doInBackground(Params… params) : Background에서 수행할 작업을 구현 • execute() 함수에 입력된 인자들을 전달 받음 • void onProgressUpdate(Progress… values) : publishProgress(…) 메소드 호출의 callback으로 background 작업 진행 상황을 update하도록 구현 • void onPostExecute(Result result) : doInBackground(…)가 리턴하는 값을 바탕으로 작업 결과를 표현하도록 구현 • void onCancelled() : AsyncTask:cancel(Boolean)메소드를 사용해 AsyncTask인스턴스의 background 작업을 정지 또는 실행금지 시켰을 때 실행되는 콜백
  • 12. XML 처리 • 안드로이드에서 XML 처리가 필요한 경우가 바로 서버에서 제공하는 데이터를 읽어 와서 스마트 폰의 화면에 표시하는 경우 • XML은 워낙 많이 사용되므로 이것을 전문적으로 처리해주는 파서(parser)들이 존재 • Parser들 : DOM, SAX, PullParser등 파서 특징 DOM (Document Object Model) 엘리먼트들을 한 번에 트리 구조로 파싱하여 메모리에 저장 언제든지 원하는 엘리먼트에 대한 정보를 얻을 수 있음 메모리는 많이 차지하는 단점 SAX (Simple API for XML) 라인 단위로 파싱하기 때문에 메모리의 소모가 적음 하지만 지나쳐간 엘리먼트들의 정보를 얻고 싶으면 다시 파싱해야 함 PullParser SAX와 유사하지만 원하는 부분까지만 파싱이 가능
  • 13. XML DOM 기초 • DOM은 W3C의 표준으로 XML 문서에 접근하고 처리하는 표준적인 방법을 정의 • DOM은 XML 문서를 트리 구조로 표현 • DOM은 문서 엘리먼트의 객체(Object), 특징(Property), 메소드(interface)를 정의 • DOM은 XML 엘리먼트를 구하고 변경하고 추가, 삭제하는 방법의 표준 • DOM에서 XML 문서의 모든 것은 노드(node)라고 불림 • 전체 문서는 도큐먼트 노드(Document node)라고 부름 • 모든 XML 엘리먼트는 엘리먼트 노드(element node) • XML 엘리먼트 안의 텍스트는 텍스트 노드(text node) • 모든 어트리뷰트(attribute)는 어트리뷰트 노드(attribute node)
  • 14. XML DOM 예 • <?xml version=“1.0” encoding=“ISO-8891-1”?> <restaurant> <food category=“Korean Food”> <title lang=“kor”>Fantasy of Kimchi</title> <chef>cooddy</chef> <year>2016</year> <price>15,000</price> </food> <food category=“English Food”> <title lang=“en”>Fish & chips</title> <chef>Sammy</chef> <year>2014</year> <price>20,000</price> </food> </restaurant> 루트 노드 엘리멘트 노드 텍스트 노드
  • 15. DOM XML 파서(Parser) 생성 • javax.xml.parsers.DocumentBuilderFactory 객체를 이용하면 자바 DOM xml 파서 생성 가능 • parse()함수 : parse()함수 호출시 XML문서가 DOM 트리 구조로 변환 • DocumentBuilder 객체 : DOM 파서(Parser) DocumentBuilder builder = null; try { Document document = builder.parse(new FileInputStream(“data//text.xml”)); } catch(SAXException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); }