posted by 초식사자 2011.09.27 01:08

안드로이드 네트워킹
개발시 네트워크 기능을 포함하려면 초기 설계 단계부터 반드시 고려해야한다.
[JSON]
자바스크립트를 객체화해서 통신 (엔터테인먼트 앱, 아이폰에서 많이 사용)
무겁기 때문에 웬만하면 사용하지않는 것을 권장

[XML]
XML 데이터를 주고받으면서 통신 (정형화된 방식이 있음)
파서가 필요함 (웹은 대부분 DOM ,앱은 대부분 SAX)

[SOAP]
WSDL (KSOAP2 라이브러리 임포트가 필요함)
원격에 있는 프로그램을 실행시키는 원리


웹 + 앱 = 하이브리드 앱

android.net 패키지에 있는 API는 내부 통신을 위해서만 사용된다.


accept 클라이언트 요청 대기 (세마포어 기반)'


CBD (component Based Development)
component : 소프트웨어 구성 요소 (액티비티, 브로드캐스트 리시버, 서비스, 컨텐츠 프로바이더)

Declaration : 선언 기반
늦은 바인딩 : 런타임 환경을 잘 다루어야한다.
설계 / 디자인 패턴


달빅(어플리케이션마다 달빅 인스턴스가 하나씩)
리눅스
하드웨어

명시적 인텐트는 같은 어플리케이션 내에서만 쓰인다.

어플은 36MB를 넘어갈 수 없다 ( 그 이상은 쪼개어서 제작)

자바의 직렬화 = 안드로이드 Parcel

자신이 만든 객체를 인텐트화 하려면 Parcel를 인터페이스로 포함해야한다.


[로컬 네트워크]
엔드포인트를 포트 번호 대신 사용
Marshalling : 객체의 힙 메모리를 바이트화

시리얼라이저블 인터페이스를 임플리먼츠를 해주어야 직렬화와 역직렬화가 가능

HTTP 규약 = RFC2616

JAVA 진영 = JCP

printwrite 는 많은 량의 데이터를 전송할때 쓰인다.

안드로이드에서는 getter setter 함수를 사용하는것은 많은 부하를 주기 때문에 public으로 설정하고 사용하는것이 좋다.


[XML]
DOM : 문서를 트리구조로 변환한다. 많은 메모리를 요구하고 재귀호출을 사용하기 때문에 느리다. SAX보다 직관적이고 사용이 쉽다. 웬만하면 사용하지 않는 것이 좋다.
SAX :

ArrayList는 기본적으로 20개 가량이 생성이되고 제한 용량을 넘을경우 그 2배 길이의 힙 메모리를 할당하고 모두 복사한뒤 기존 힙 메모리를 해제하기때문에 많은 양의 데이터를 계속 쓰는 경우 미리 사이즈를 크게 잡는 것이 좋다.

갈비지 콜렉터가 가동할때는 다른 것은 전혀 작동을 하지 않는다.


[과제]
xml에서 필요한 4~5개 먼저 어뎁터로 연결해서 보여주고 상세히 보기 누르면 다이어로그 박스 띄우면서 전부 다 띄우기
442 위치에 XmlResourceParser xmp = getResources().getXml(R.xml.asdfa.xml); (PullParser와 같음)

댓글을 달아 주세요