Android Internals

27 Dec 2014

액티비티가 어떻게 구동되는지 알아보기 위해서 안드로이드 내부구조가 어떻게 생겼는지부터 공부했다.

Power on and boot ROM code execution

전원이 들어오면 부트롬이 낸드에서 부트로더를 찾아서 코드를 실행한다.

The boot loader

부트로더는 메모리 초기화와 커널을 불러오기위해 사용하는 프로그램

The Linux kernel

커널은 시스템이 준비되기위해 필요한 모든걸 한다.

The init process

init 프로세스는 모든 시스템 프로세스의 조상이다.

Zygote and Dalvik

Zygote는 VM을 실행시키는 프로세스다. /dev/socket/zygote 소켓으로 앱 실행을 요청받으면 fork()한다. 그리고 새 VM을 만들고 설정하고 앱을 올린다.

The system server

시스템서버는 시스템에서 처음으로 실행되는 자바코드로 안드로이드에 필요한 서비스들을 시작시킨다.

Boot completed

시스템서버가 올라오고 모든 시스템 부팅이 완료가되면 ACTION_BOOT_COMPLETED를 브로드캐스트한다.

Activity Manager

어플리케이션의 생명주기를 제어하는 관리자다.

예) 런처에서 새 프로그램 시작:

예) 코드에서 새 프로그램 시작:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.abc");
startActivity(launchIntent);

Binder

Archives

2018년 회고

2018년도 끝이 왔다.

데이터 처리의 단순화

데이터야놀자 2018 발표

Spark 의 Global Temporary View

데이터 사이즈 불균형으로 인한 ...

2017년 회고

어느새 2017년 마지막이 되어...

Spark 에서 S3 데이터 삽질기

AWS V4 API만 제공되는 ...

iPhone 7

어쩌다보니 한국 발매 이전에 아...

Android Internals

액티비티가 어떻게 구동되는지 알...

Android Wi-Fi State Machine

연구실 주제로 필요에 의해서 안...

주변의 AP를 찾는 방법

Wi-Fi 장비의 Scan 에 ...