Context Provider <- context resolver Activate target Intent : Content Message 보유, Intent object Activity/Service -> Request action, Data URI Activity -> finish() finishActivity() -> Activity 종료 Service -> stopSelf() context.stopService() Manifest : 적하목록 AndroidManifest.xml App의 component 명시 manifest에 선언 X -> system X -> 실행 x (broad cast receiver는 동적(code)생성 가능) stack에서 Activity는 "push/pop"만 된다 =>TASK screen에 보여지지 않는 activity 우선 제거 System -> process(Activity 보유) 강제종료 onPause() onStop onDestroy() onSaveInstanceState() : activity 상태 저장 (bundle object) onPause() : 지속
Java Code -> aapt(SDK) -> Android Package(.apk)

Process 마다 -> 가상머신 => 격리 실행

Application -> User ID부여 (동일 ID 부여 가능, Process/VM 공유), Permission(File)

App의 element(구성요소) 공유가능 => main() 없음, component(필요시 -> instance 생성)

Activity :
Visual UI(focused)
첫번째 Activity에는 표시
Drawable window 부요(하나 이상) -> visual context( activity <- [view - supply view] ->user)

Service :
Background 실행, non-visual
ex)재생목록, 음악재생 미디어 플레이어(음악 제어 -> Activity 아님 / Background 상태 재생 안됨)

Broadcast Receiver :
Broadcast Announcement 수신/응답
System code에서 발생(app도 가능)
Notification Manager : 사용자 이목 끌기(조명, 진동, 사운드) -> Status bar에 상주

Content Provider :
다른 App에서 특정 App의 Data set 생성 -> 표준 Method
content provider -> Method 호출, content provider 통신 가능

from : [http://developer.android.com/index.html]

 

Wait() 호출 시점에 child process가 없다면, 생성시까지 blocking -> waitpid() 사용 blocking 해결

 

Signal : system에 특정 상황 발생 -> OS 전달 메시지 => process(signal handler 서유)에 전달

Signal handler : signal 처리 함수 모듈

Sigaction() : signal 발생 -> signal handler 함수 연결

Time-Wait :
(ACK의 소멸로 인한) 연결종료 과정에서 Four-Way-Handshaking이 제대로 안되면 Time-Wait 상태가 된다.
ACK를 재전송
Time-Wait 상태일 때 socket은 완전히 소멸되지 않는다. -> bind() error가 생긴다.

SO_REUSEADDR (1 -> True : 새 socket에 ip/port 할당 / 0 -> False : Default)

Nagle's Algorithm :
전송 가능할 때 많이 보낸다.
OFF로 설정 -> 속도가 빠름, 과부하 발생

http://en.wikipedia.org/wiki/Nagle's_algorithm

전송 가능할 대 많이 보낸다.
OFF -> 속도가 빠름, 과부하 발생

Visual Studio 2008의 최대 단점은 Inteli_sense의 캐싱 속도가 너무 느리다는 것이다.

적어도 내가 천재가 아닌지라,

모든 메소드와 인자, 멤버를 알지 못한다.

코딩하면서 가장 답답한 일은

접근 연산자를 찍었는데도 인텔리 센스에서 멤버를 못 보여주는게 아닌가 싶다.

혹시나 싶어 Visual Assist를 설치해 보았지만

별로 도움이 안된다.

5분만에 삭제...

안그래도 무거운 IDE를 더 무겁게 하기만 한다 ㅡㅡ;

socket의 종료 :
close() -> 수신/전송 모두 종료
Full Duplex에서 문제 발생 -> Half Close 방법 사용

socket -> host간 연결 -> I/O stream 생성

shutdown() :
half close를 사용하는 이유 : File 전송시 Out Stream 종료 -> EOF 자동 전송

TCP / UDP :
ip를 사용하지만 Flow Control 제공 유/무 차이가 있다

UDP 특징 :
TCP에 비해 속도가 빠름
Flow Control 제공하지 않기 때문

TCP : packet 단위
UDP : datagram 단위

UDP는 Host의 내부에서 port 정보 -> 최종 목적지를 구분

TCP를 사용해야 하는 경우 :
packet 손실이 전체 Data영향을 미치는 경우 ex)압축파일 전송

UDP를 사용해야 하는 경우 :
Muntimedia Data 실시간 전송 (빠른 속도)

TCP가 느린 이유 :
CE, CT, FC

Data 클 경우 TCP가 UDP보다 유리 (session 유지 긴 경우)

UDP :
server - listen(), accept() / client - connect() 필요없음
socket(), bind() 있어야 함
socket 하나
Data 전송 함수 호출시 + 수신 주소 정보 포함 시킴
최초의 sendto() -> ip/port를 할당(종료시까지 유지됨)
connect() 사용 할 수도 있다. -> 속도개선 (kernel -> socket 연결 / 가장 시간 많이 걸리는 작업을 미리 함)

socket :
전이중(Full - Duplex)

three - way - handshaking >> connect() 로 시작

call establish (3way) -> data transfer -> call terminate (4way)

TCP기반 -> Data 경계 모름 -> Pakcet 구성수 모름
Kernel I/O Buffer

+ Recent posts