안드로이드 서비스

Similar documents
Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

THE TITLE

모바일 안드로이드 아키텍처

Microsoft PowerPoint App Fundamentals[Part1].pptx

Microsoft PowerPoint - Mobile SW Platform And Service Talk pptx

슬라이드 1

1부

Microsoft PowerPoint Android-구조.애플리케이션 기초(1.0h).pptx

서현수

¨ìÃÊÁ¡2

Microsoft PowerPoint App Fundamentals[Part2].pptx

JVM 메모리구조

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

TTA Journal No.157_서체변경.indd

Network Programming

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

슬라이드 1

F120S_(Rev1.0)_1130.indd

[Brochure] KOR_TunA

LG-LU6200_ICS_UG_V1.0_ indd

( )부록

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

PCServerMgmt7

제11장 프로세스와 쓰레드

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

LU8300_(Rev1.0)_1020.indd

02_3 지리산권 스마트폰 기반 3D 지도서비스_과업지시서.hwp

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

PowerPoint 프레젠테이션


<31322D322D323320C3D6C0E7C7F620B9DAC1A6BFF82E687770>

SKT UCC DRM

슬라이드 1

자바 웹 프로그래밍

슬라이드 1

歯이시홍).PDF

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

Windows Live Hotmail Custom Domains Korea

안전을 위한 주의사항 제품을 올바르게 사용하여 위험이나 재산상의 피해를 미리 막기 위한 내용이므로 반드시 지켜 주시기 바랍니다. 2 경고 설치 관련 지시사항을 위반했을 때 심각한 상해가 발생하거나 사망에 이를 가능성이 있는 경우 설치하기 전에 반드시 본 기기의 전원을

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

manual pdfÃÖÁ¾

Microsoft Word - src.doc

설계란 무엇인가?


JDBC 소개및설치 Database Laboratory

¹æ¼Û±â¼ú-pdf-Äõ¼öÁ¤

KBS-¹æ¼Û±â¼ú¿¬±¸-1Àå-º°

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

Microsoft PowerPoint - 13-em14-안드로이드.ppt [호환 모드]

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

03( ) CPL14-30.hwp


jy-i3000.indd

07( ) CPLV12-35.hwp

PowerPoint Template

Cloud Friendly System Architecture

이제는 쓸모없는 질문들 1. 스마트폰 열기가 과연 계속될까? 2. 언제 스마트폰이 일반 휴대폰을 앞지를까? (2010년 10%, 2012년 33% 예상) 3. 삼성의 스마트폰 OS 바다는 과연 성공할 수 있을까? 지금부터 기업들이 관심 가져야 할 질문들 1. 스마트폰은

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

untitled

PowerPoint 프레젠테이션

Microsoft Word - 김완석.doc

앞부속

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - C++ 5 .pptx

SNS 어플리케이션 전자통신컴퓨터공학부 조성경

제 출 문 환경부장관 귀하 본 보고서를 습마트기기 활용 환경지킴이 및 교육 통합 서비스 개 발 과제의 최종보고서로 제출합니다. 주관연구기관 : 주관연구기관장 : 2015년 10월 주식회사 덕키즈 김 형 준 (주관)연구책임자 : 문종욱 (주관)참여연구원 : 김형준, 문병

콘텐츠 PowerPoint 디자인

Chapter #01 Subject

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

부서: 감사담당관 정책: 행정의 투명성 제고 단위: 민원발생사전예방 1)민원심의위원 수당 70,000원*9명*3회 1, 업무추진비 5,800 5, 시책추진업무추진비 5,800 5, )민원심의 업무추진 250,000원*4회 1,000

슬라이드 1

Intro to Servlet, EJB, JSP, WS

슬라이드 1

슬라이드 1

유니티 변수-함수.key

Voice Portal using Oracle 9i AS Wireless

2장 변수와 프로시저 작성하기

AGENDA 모바일 산업의 환경변화 모바일 클라우드 서비스의 등장 모바일 클라우드 서비스 융합사례

Google Maps Android API v2

I What is Syrup Store? 1. Syrup Store 2. Syrup Store Component 3.

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Gartner Day

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

1) 리눅스커널 메모리관리, 프로세스관리, 파일시스템관리, 네트워크스택등하드웨어지원 2) Native 라이브러리 (C, C++) 안드로이드프레임워크에서필요한 C 와 C++ 라이브러리 3) 안드로이드런타임 코어라이브러리지원, Dalvik Virtual Machine 으로

istay

Microsoft PowerPoint - Chapter_03.pptx

Microsoft PowerPoint - 권장 사양

Straight Through Communication

Microsoft PowerPoint - 2-Objective-C 기초

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Application Provide LBS Platform Location manager HW GPS Wi-Fi 3G Sensor Smart phone DataBase for LBS Server etc... 공받도록하고있으며안드로이드에서도동일하게이루어지고있다. 이러한위

Transcription:

Android Service Team 4 20100031 강혜주 20100220 김소라 20100357 김진용

Contents Android Service 01 안드로이드서비스 02 사용이유 03 안드로이드서비스예 04 안드로이드서비스분류 Application Service 05 애플리케이션서비스 06 두가지방법 07 서비스생명주기 08 애플리케이션서비스분류 09 마샬링 / 언마샬링 10 로컬서비스 11 리모트서비스 12 로컬서비스 & 리모트서비스생성 System Service 13 안드로이드시스템서비스 14 네이티브시스템서비스 15 자바시스템서비스 16 자바시스템시스템서비스서비스실행과정 17 시스템서비스동작과정 18 서비스예제코드

Android Service 01 안드로이드서비스 UI 없이주기적으로특정한일을수행하는백그라운드프로세스를가리킴 클라이언트를위해특정한기능을제공하는역할

Android Service 02 사용이유 Activity 가종료되어도계속해서동작하게하기위하여사용 애플리케이션개발에필요한중요 API 를시스템서비스로지원

Android Service 03 서비스예

Android Service 04 안드로이드서비스분류 코어플랫폼서비스 자바시스템서비스 시스템서비스 하드웨어서비스 안드로이드서비스 네이티브시스템서비스 로컬서비스 애플리케이션서비스 원격서비스

Application Service 05 애플리케이션서비스 안드로이드 SDK 의 Service 클래스를확장한클래스의인스턴스 UI 없이주기적으로특정한일을수행하는 백그라운드프로세스를가리킴 Activity 나 Broadcast Receiver 처럼안드로이드애플리케이션컴포넌트의일종

Application Service 06 개발자가서비스이용방법 1. 서비스시작종료 각종기능을수행하는서비스를백그라운드로 실행 / 종료 2. 바인딩을통한서비스원격제어 바인딩이유지되는동안서비스가제공하는인터페이스를통해서비스의각종기능을제어가능

Application Service 07 애플리케이션서비스생명주기 startservice() Api 를통한서비스시작 bindservice() Api 를통한서비스생성 oncreate() onstartcommand() 서비스실행서비스중단 ondestroy() oncreate() onbind() 클라이언트와서비스의상호작용 onunbind() ondestroy() ondestroy() 서비스종료 서비스종료

Application Service 07 애플리케이션서비스생명주기 oncreate onstartcommand onbind 백그라운드데몬일경우 ondestroy 원격인터페이스호출인경우

Application Service 08 애플리케이션서비스의분류 프로세스 액티비티 액티비티 생성 생성 로컬서비스 프로세스 APK 패키지 리모트서비스 프로세스 APK 패키지

Application Service 08 애플리케이션서비스의분류 1. 로컬서비스 서비스를생성했을때서비스가자신과동일한 프로세스에서실행 메인액티비티가종료되면같이종료됨 바인딩할로컬서비스의레퍼런스만얻으면됨

Application Service 08 애플리케이션서비스의분류 2. 리모트서비스 서비스를생성했을때서비스가자신과다른 프로세스에서실행 메인액티비티가종료하더라도계속동작 독립적인프로세스위에서서로동작하기때문에 IPC 메커니즘을이용 바인더 IPC 통신을해야하므로마샬링 / 언마샬링 과정을거쳐야함

Application Service 09 마샬링 / 언마샬링 마샬링 : 데이터를모은다음, 데이터들을메시지형식으로버퍼에넣고인터페이스에맞게데이터를조직화하거나미리정해진 형식으로변환하는과정 언마샬링 : 마샬링을통해서보내진데이터들을원래구조로복원시키는것

Application Service 10 로컬서비스 동일프로세스영역 서비스클라이언트 로컬서비스 액티비티 mboundservice 서비스 bindservice() mbinder onbind() ServiceConnection onserviceconnected( ComponentName, IBinder LocalBinder getservice()

Application Service 10 로컬서비스 액티비티 동일프로세스영역 (1) bindservice(intent,serviceconnection,int) 를호출하여서비스에게연서비스클라이언트로컬서비스결요청 mboundservice 서비스 bindservice() mbinder onbind() ServiceConnection onserviceconnected( ComponentName, IBinder LocalBinder getservice()

Application Service 10 로컬서비스 액티비티 동일프로세스영역 (1) bindservice(intent,serviceconnection,int) (2) 바인딩처리를위한서비스의 onbind(intent) 를호출하여메서드서비스에게호출연서비스클라이언트로컬서비스 ( 액티비티가자신과연결할결수요청있게 Binder객체를반환 ) mboundservice 서비스 bindservice() mbinder onbind() ServiceConnection onserviceconnected( ComponentName, IBinder LocalBinder getservice()

Application Service 10 로컬서비스 액티비티 동일프로세스영역 (1) (3) bindservice(intent,serviceconnection,int) onserviceconnected(componentname,ibinder) (2) 바인딩처리를위한서비스의 onbind(intent) 를호출하여메서드서비스에게바인더호출객체의연서비스클라이언트로컬서비스 ( 액티비티가 getservice() 자신과를호출하여연결할서비스결수요청있게객체의 Binder 레퍼런스객체를값을반환구함 ) mboundservice 서비스 bindservice() mbinder onbind() ServiceConnection onserviceconnected( ComponentName, IBinder LocalBinder getservice()

Application Service 10 로컬서비스 액티비티 동일프로세스영역 (1) (4) (3) bindservice(intent,serviceconnection,int) 서비스 onserviceconnected(componentname,ibinder) (2) 바인딩객체의처리를레퍼런스위한값을서비스의액티비티의 onbind(intent) mbundservice 를호출하여메서드서비스에게바인더멤버호출객체의필드에연서비스클라이언트로컬서비스 ( 액티비티가 getservice() 자신과를호출하여연결할서비스저장결수요청있게객체의 Binder 레퍼런스객체를값을반환구함 ) mboundservice (4)LocalService 객체연결 서비스 bindservice() mbinder onbind() ServiceConnection onserviceconnected( ComponentName, IBinder LocalBinder getservice()

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) 액티비티 mservice 서비스 bindservice() msecondarybinder ServiceConnection onbind() onserviceconnected( ComponentName,IBinder ISecondary.Stub Isecondary.Stub.Proxy getpid() 프록시메서드 Isecondary.aidl aidl 틀에의해자동생성 ISecondary.aidl getpid() 스텁메서드 ontransact()

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) 액티비티 mservice 서비스 bindservice() msecondarybinder ServiceConnection onbind() onserviceconnected( ComponentName,IBinder ISecondary.Stub Isecondary.Stub.Proxy getpid() 프록시메서드 Isecondary.aidl getpid() 스텁메서드 ontransact() 액티비티와서비스의통신을위한인터페이스정의 aidl 틀에의해자동생성 ISecondary.aidl

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) (1) bindservice(intent,serviceconnection,int) 를호출하여서비스에게연액티비티결요청 mservice 서비스 bindservice() msecondarybinder ServiceConnection onbind() onserviceconnected( ComponentName,IBinder ISecondary.Stub Isecondary.Stub.Proxy getpid() 프록시메서드 Isecondary.aidl aidl 틀에의해자동생성 ISecondary.aidl getpid() 스텁메서드 ontransact()

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) (1) bindservice(intent,serviceconnection,int) (2) 서비스의 onbind(intent) 를호출하여를바인더호출하여객체서비스에게제공연 ( 액티비티여기서바인더객체는결 Stub 요청클래스를통해생성됨 ) mservice 서비스 bindservice() msecondarybinder ServiceConnection onbind() onserviceconnected( ComponentName,IBinder ISecondary.Stub Isecondary.Stub.Proxy getpid() 프록시메서드 Isecondary.aidl aidl 틀에의해자동생성 ISecondary.aidl getpid() 스텁메서드 ontransact()

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) (1) bindservice(intent,serviceconnection,int) (2) 서비스의 onbind(intent) 를호출하여를바인더호출하여객체서비스에게제공연 (3) 서비스와바인더 IPC를수행하기위한프록시객체생성 ( 액티비티여기서바인더객체는결 Stub 요청클래스를통해생성됨 ) mservice 서비스 bindservice() msecondarybinder ServiceConnection onbind() onserviceconnected( ComponentName,IBinder Isecondary.Stub.Proxy getpid() 프록시메서드 (3)Binder 객체이용서비스프록시객체생성 Isecondary.aidl aidl 틀에의해자동생성 ISecondary.aidl ISecondary.Stub getpid() 스텁메서드 ontransact()

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) (1) bindservice(intent,serviceconnection,int) (2) 서비스의 onbind(intent) 를호출하여를바인더호출하여객체서비스에게제공연 (4) 서비스 (3) 서비스와프록시객체를바인더이용해서 IPC를수행하기서비스의위한서비스프록시프록시객체메서드생성호출 ( 액티비티여기서바인더객체는결 Stub 요청클래스를통해생성됨 ) mservice 서비스 bindservice() (4)getPid() 프록시함수호출 ServiceConnection msecondarybinder onbind() onserviceconnected( ComponentName,IBinder Isecondary.Stub.Proxy getpid() 프록시메서드 (3)Binder 객체이용서비스프록시객체생성 Isecondary.aidl aidl 틀에의해자동생성 ISecondary.aidl ISecondary.Stub getpid() 스텁메서드 ontransact()

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) (1) (4) (5) bindservice(intent,serviceconnection,int) 서비스서비스 (2) 서비스의프록시프록시객체를객체 onbind(intent) (Proxy) 이용해서에서를서비스의서비스호출하여바인더서비스를바인더호출하여객체프록시객체 (Stub) 서비스에게메서드제공로바인더호출연 ( 액티비티여기서바인더객체는 IPC 데이터결 Stub 요청클래스를전달통해생성됨 ) mservice 서비스 bindservice() (4)getPid() 프록시함수호출 ServiceConnection msecondarybinder onbind() onserviceconnected( ComponentName,IBinder Isecondary.Stub.Proxy getpid() 프록시메서드 (3)Binder 객체이용서비스프록시객체생성 (5) 바인더 IPC 데이터 (TRANSACTION_getPid 트랜잭션코드 ) Isecondary.aidl aidl 틀에의해자동생성 ISecondary.aidl ISecondary.Stub getpid() 스텁메서드 ontransact()

Application Service 11 리모트서비스 액티비티 (Process A) 리모트서비스 (Process B) (1) bindservice(intent,serviceconnection,int) (2) 서비스의 onbind(intent) 를호출하여를바인더호출하여객체서비스에게제공연 (4) (5) 서비스서비스 (3) 서비스와프록시프록시객체를객체 (6) 바인더 (Proxy) 서비스의이용해서 IPC를에서 Stub 수행하기서비스의서비스메서드를위한바인더서비스호출프록시객체프록시 (Stub) 객체메서드생성로바인더호출 ( 액티비티여기서바인더객체는 IPC 데이터결 Stub 요청클래스를전달통해생성됨 ) mservice 서비스 bindservice() (4)getPid() 프록시함수호출 ServiceConnection msecondarybinder onbind() onserviceconnected( ComponentName,IBinder Isecondary.Stub.Proxy getpid() 프록시메서드 (3)Binder 객체이용서비스프록시객체생성 (5) 바인더 IPC 데이터 (TRANSACTION_getPid 트랜잭션코드 ) Isecondary.aidl aidl 틀에의해자동생성 ISecondary.aidl ISecondary.Stub getpid() 스텁메서드 (6)getPid() 스텁메서드호출 ontransact()

Main Subject 12 로컬 & 리모트서비스생성 로컬서비스 : <service> 엘리먼트에서비스이름만추가 리모트서비스 : <service> 엘리먼트에이름뿐만아니라 android:process 애트리뷰트를추가

Main Subject 12 로컬 & 리모트서비스생성

System Service 13 안드로이드시스템서비스 디바이스제어, 위치정보제공, 알람설정및 통지메시지표시등제공 시스템의가장기본적인핵심기능들을제공함

System Service 안드로이드서비스분류 코어플랫폼서비스 자바시스템서비스 시스템서비스 하드웨어서비스 안드로이드서비스 네이티브시스템서비스 로컬서비스 애플리케이션서비스 원격서비스

System Service 13 안드로이드시스템서비스 APPLICATIONS Home Dialer SMS/MMS IM Browser Camera 코어플랫폼 Home 서비스 & 하드웨어서비스 Media Contacts Voice Dial Email Calender Albums Home Player APPLICATION FRAMEWORK Activity Manager Window manager Content Providers View System Notification Manager Package Manager Telephony Manager Resource Manager Location Manager LIBRARIES ANDROID RUNTIME Surface Manager Media Framework SQLite Core Libraries OpenGL ES 네이티브시스템 Package Manager 서비스 WebKit Dalvik Virtual Machine SGL Package Manager Sibc LINUX KERNEL Display Driver Camera Driver Bluetooth Driver Shared Memory Drivers Binder(IPC) Driver USB Driver Keypad Driver WiFi Driver Audio Drivers Power Management

System Service 14 네이티브시스템서비스 App 1 App 2 Tone Audio Music Player Game Audio Audio Flinger Earphone Speaker Bluetooth Java JNI Interface Audio Source Binder Transfer Native service Reasmpilling mixing Audio codes App 1 App 2 Media Player Tone Audio Audio Manager AudioFlinger 이어폰 헤드폰

System Service 14 네이티브시스템서비스 App 1 App 2 Surface Surface Surface Surface Flinger Frame Buffer Java surface Native service FrameBuffer JNI Interface Binder Transfer Compose App 1 Surface Flinger App 2

System Service 15 자바시스템서비스 코어플랫폼서비스 안드로이드애플리케이션과직접상호작용은 하지않지만안드로이드프레임워크가동작하는데필수적인서비스

System Service 15 자바시스템서비스 하드웨어서비스 저수준하드웨어제어를위한 API 를제공하는서비스

System Service 15 자바시스템서비스 getsystemservice() Local Manager 생성 Location Manager 바인더 IPC Location Service 1. 현재 GPS 위치정보요청 2. GPS 정보제공

System Service 16 시스템서비스실행과정 (2) Zygote 실행 Zygote 자바레이어 (5) 자바시스템서비스실행 System Server Activity Service Connectivity Service Location Service Sensor Service Wifi Service 자바시스템서비스 init (1) Media Server 프로세스실행 Media Player Service Audio Flinger Surface Flinger Camera Service Libandroid_servers Media Server 네이티브시스템서비스 C++ 레이어 (4) Surface Flinger 서비스실행

System Service 16 시스템서비스실행과정 서비스를 Context Manager 에등록함 Audio Flinger 서비스등록 서비스등록 main_mediaserver.c pp 의 Main() 함수 Camera Service Media Player Service 서비스등록 Context Manager Audio Policy Service 서비스등록 Media Server 프로세스

System Service 16 시스템서비스실행과정 System Server 프로세스 (SystemServer.java) 자바레이어 (5)ServerThread 생성 Init1() Init2() ServerThread (6) 자바시스템서비스생성및등록 Activity Service Alarm Service Connectivity Service (1)JNI 로 System_init() 호출 (4)JNI 로 Init2() 메서드호출 Location Service System_init() (2) 인스턴스생성 (3) 서비스등록 Surface Flinger Context Manager Libandroid_servers 라이브러리 C++ 레이어

System Service 17 시스템서비스동작구조 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 시스템서비스핸들리스트 서비스프록시 Ifoo 서비스인터페이스 바인더 RPC 서비스프레임워크 서비스매니저 서비스스텁 IServiceManager 서비스인터페이스 addservice() getservice() 바인더 IPC 바인더드라이버

System Service 17 시스템서비스동작구조 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 서비스프록시 Ifoo 서비스인터페이스 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 서비스스텁 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버

System Service 17 시스템서비스동작구 조 (1) 프록시함수를호출해서바인더 RPC 데이터를생성및전달 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 바인더 RPC 데이터 서비스프록시 Ifoo 서비스인터페이스 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 서비스스텁 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버

System Service 17 시스템서비스동작구 조 (2) 서비스프록시함수를통해마샬링이됨 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 바인더 RPC 데이터 서비스프록시 Ifoo 서비스인터페이스 foo() 서비스프록시함수 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 서비스스텁 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버

System Service 17 시스템서비스동작구 조 (3) 서비스프레임워크를통해바인더 IPC 데이터로생성 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 바인더 RPC 데이터 서비스프록시 Ifoo 서비스인터페이스 foo() 서비스프록시함수 바인더 IPC 데이터 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 서비스스텁 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버

System Service 17 시스템서비스동작구 조 (4) 바인더 IPC 데이터를바인더드라이버를통해서비스에전송 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 바인더 RPC 데이터 서비스프록시 Ifoo 서비스인터페이스 foo() 서비스프록시함수 바인더 IPC 데이터 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 서비스스텁 바인더 IPC 데이터 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버 바인더 IPC

System Service 17 시스템서비스동작구 조 (5) 서비스프레임워크를통해언마샬링됨 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 바인더 RPC 데이터 서비스프록시 Ifoo 서비스인터페이스 foo() 서비스프록시함수 바인더 IPC 데이터 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 서비스스텁 바인더 IPC 데이터 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버 바인더 IPC

System Service 17 시스템서비스동작구 조 (6) RPC 코드를통해알맞은서비스스텁함수를찾음 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 바인더 RPC 데이터 서비스프록시 Ifoo 서비스인터페이스 foo() 서비스프록시함수 바인더 IPC 데이터 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 바인더 RPC 데이터서비스스텁 ontransact() 바인더 IPC 데이터 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버 바인더 IPC

System Service 17 시스템서비스동작구 조 (7) RPC 데이터를인자로해서서비스스텁함수호출 서비스클라이언트서비스서버컨텍스트매니저 서비스사용자 foo() 서비스프록시함수호출 바인더 RPC 데이터 서비스프록시 Ifoo 서비스인터페이스 foo() 서비스프록시함수 바인더 IPC 데이터 RPC 형태로 Foo 서비스의 foo() 함수호출 바인더 RPC 서비스프레임워크 서비스매니저 Foo 서비스 Ifoo Foo() 서비스서비스인터페이스스텁함수 바인더 RPC 데이터서비스스텁 ontransact() 바인더 IPC 데이터 시스템서비스핸들리스트 핸들 RPC 데이터 RPC 코드 바인더프로토콜 IServiceManager 서비스인터페이스 addservice() 바인더 IPC 데이터 getservice() 바인더 IPC 바인더드라이버 바인더 IPC

System Service 18 서비스예제코드 https://github.com/gohomeapp 저장소 ServiceExam 서비스생명주기에관한내용 demonservice 백그라운드로돌아가는서비스에관한내용 bindservice 바인더서비스에관한내용

Q & A