안드로이드 세미나 김동민.

Slides:



Advertisements
Similar presentations
Services. Application component No user interface Two main uses Performing background processing Supporting remote method execution.
Advertisements

Programming with Android: Notifications, Threads, Services
Computer Programming in C Chapter 년 가을학기 부산대학교 전자전기정보컴퓨터공학부.
Ch 7. Spring EL (Spring Framework 3.0 M3) 백기선
2007/10/30 최석훈. 목차 I. Distributed System II. SOAP 의 장점 III. SOAP 메시지 구조 I. Envelope II. Header III. Body IV. SOAP 예제 – 달력 얻기 I. SOAP server II. SOAP client.
6장 리눅스 쉘 정보보안 연구실 김동민.
Geoserver / Deegree 신중수. 2 차례  Overview  Geoserver/Deegree 특징  Geoserver  Deegree  참고자료.
강성재 Developer Evangelist Microsoft Korea D&PE 개발자 관점에서 바라본 SQL Server 2005 (2)
 Universal Serial Bus 컴퓨터와 주변기기를 연결하는 데 쓰이는 입출력 표준 가운데 하나 (USB 1.0, 1.1, 2.0, 3.0 등 )
HOMEPAGE & SEARCH ENGINE  2. About Cloud computing  3. Application Introduction - Nutch - Google App Engine  4. Presentation Contents.
프로그래밍 기초와 실습 Chapter 7 Enumeration Types and typedef.
Database Programming의 원리
SAP Tuning 실무 교육
SOAP 실전예제 Internet Computing KUT Youn-Hee Han.
8. Notification과 Alarm.
구성모 Struts Tutorial.
안드로이드 프로그래밍 서비스와 방송 수신자 장 원 영 실습파일 :
로봇 모니터링 2/2 UNIT 21 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Broadcasting Service 2.
Business Computing Lab Ahn, Younghoe WAF overview and Study guide WAF overview and Study guide.
인터럽트의 개요 Interrupt의 처리 과정
Chapter 06 데이터베이스 연동 지원 작성자 : 장은호 소속팀 : 네이버메인개발 작성년월일 :
DHCP 2000 년 2 학기 이철 ( )
Publishing Data for the Users (Chapter18) Data Warehousing Lab. Semester 2 HyunSuk Jung.
Restlet - WebService Internet Computing KUT Youn-Hee Han.
기술로 고객의 마음을 움직입니다 1 WebtoB 4.0 소개 KAIST 박대연 교수
IT CookBook, 초보자의 첫 번째 엑셀 2007 엑셀 2007 기초. 2 이 장에서 배울 내용  Section 01 엑셀 2007 기본 기능 익히기  Section 02 데이터 입력 및 편집  Section 03 워크시트 편집 및 관리  Section 04.
1/43 고급자바프로그래밍 (ADVANCED JAVA PROGRAMMING) 강원대학교 컴퓨터학부 2012 년 가을학기 담당교수 정충교 1.
Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.
5-1. 캔버스 천안천일고등학교 류빈 1.Canvas 와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개 한다. 2. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에.
Chapter9_10 Circuit & Packet Switching
©2005 International.NET Association Asia Pacific WPF 둘러보기 이 수 겸 – kenial Microsoft ASP.Net MVP.
© Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 관리 페이지 접속방법 (AP 설정 변경.
스레드 프로그래밍 Lecture #7.
1  Access Policy 는 Network Access 에 대한 회사의 문서화된 표준이다. Device 접근 Network 에의 접근 Definition of Access Policy Core 나 다른 Switch Block 에 대한 루트나 서비스 업데이트를 금지.
데이터 저장 & Fragment UNIT 28 로봇 SW 콘텐츠 교육원 조용수. 데이터 저장 & Fragment SharedPreference 로 데이터 저장 Fragment 의 이해 2.
Simulink 강의 노트 작성 일자 : 2007, 01, 30 저 자 : 임 종수. 강의 순서 -- Section Simulink 의 특징과 install 시 주의사항. 2. simple simulink model 개발. 3. simulink 의 계산 방법.
프로그래밍 기초와 실습 Chapter 6 The Fundamental Data Types.
안드로이드 앱 프로그래밍 네트워킹 김준호.
Windows95 VxD Design and Win32 Application inter face 발 표 : 노 원국 ( 컴퓨터 시스템 설계 )
The Java Context Awareness Framework(JCAF) Ji-Yeon Lee.
Kernel Programming Task Management ( 월 ) 이 병 희
WSDL 네트웍 상의 서비스를 기술하는 XML 문서 구성  types: 데이터 타입에 대한 정의  message : 교환되는 데이터의 추상적인 (abstract) 기술  operation: 서비스가 제공하는 action 에 대한 추상적인 기술  port.
CHAP 11. 액티비티와 인텐트.
Loading the Data Warehouse (Chapter10) Data Warehousing Lab. Semester 2 HyunSuk Jung.
Apache and Tomcat, Sample Form Servlet Application HyunSuk Jung
네트워크 전송 1/2 UNIT 29 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Android Network 통신 2.
- 1 - Windows XP  학습목표 윈도우 XP 의 개요 윈도우 XP 의 프로그램 실행 및 제거 프린터 드라이버의 설치 하드디스크의 추가 및 최적화 컴퓨터 사용에 필요한 유용한 프로그램.
Ubiquitous Computing Practice - Part 4(RSSI) - Laboratory of Intelligent KUT ( Yong-hwan Kim Spring.
영상 획득 영상 저장 카메라 파라메터 커스텀 이미지
Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.
Mapreduce framework suffling & sorting. mapreduce example - wordcount.
사용환경 Communicator 연동 프로그램 설치 Communicator 실행 Web Conference 개설
AOP 개념 및 Spring 의 AOP 기능. Spring Framework – AOP 절차적 프로그래밍 OOP AOP.
TCP/IP Illustrated Vol.1 Ch.10 : Dynamic Routing Protocls ( 수 ) 안 진 섭
제 10 장 Cache Memory. kuic.kyonggi.ac.kr/~dssung 10.0 Cache = Cache Memory Cache 는 Fast Memory 이며 CPU 와 Memory 사이에 위치 Memory 내 일부 정보를 가지고 있다 CPU Cache.
목차 한국기술교육대학교 강사: 김 영 준 ㈜헬로앱스 1일차 아두이노 제어 실습
Go by Example Closures ~ Errors , Sam Jo.
Gateway Service ● Fiori 또는 UI5로 SAP Client단의 UI를 개발하였다면  SAP Server단의 개발이 이루어져야 한다. Server단의 OData 서비스를 생성하는 작업이 SAP Gateway Service 이다. ● 작업순서 Create.
Windows Programming(3)_OOP 1 Object Oriented Programming  Object & Class  Instance & Static  Fields  Constructor  Methods  Inheritance  is & as.
Connection Pooling 2001/4/3 Kang Seungwoo. Connection Pooling Database Connection cost is very high Connection Pool DB 와 연결된 여러 개의 Connection 객체를 미리 확보.
방명록 제작. 목차  기본 레이아웃  DB 구조  방명록 구조  코드 설명  화면 설명.
CHAP 14. 프로세스와 스레드. © 2012 생능출판사 All rights reserved 다중 스레딩 하나의 애플리케이션이 동시에 여러 가지 작업을 하 는 것 이들 작업은 스레드 (thread) 라고 불린다.
CHAP 7. 메뉴와 대화상자. © 2012 생능출판사 All rights reserved 메뉴의 종류 옵션 메뉴 : 사용자가 MENU 키를 누를 때 나타난다. 컨텍스트 메뉴 : 컨텍스트 메뉴는 사용자가 화면을 일정 시간 이상으로 길게 누르면 나타나는 메뉴이다.
아주대학교 LifecareScienceLAB Android Seminar 2 nd class Android Software Development 2011/04/13 – p.m. 06:00 – 팔달관 409 호 아주대학교.
Software Assurance Field Engagement Microsoft Korea.
Network Team. Overview Digital Identity 2.0 What’s CardSpace Architecture Why CardSpace Demo Future Directions Resources Q&A.
데이터 베이스 설계 및 실습 #11 - JSP 예제.
Data 전송하는 웹 서비스 Meilan JIANG Cyber infrastructure Research Laboratory Department of Advanced Technology Fusion.
Vert.x 가 좋다! Vert.x is a poluglot, non-blocking, event-driven Application platform that Runs on The JVM.
CHAP 8. 그래픽. © 2012 생능출판사 All rights reserved 안드로이드에서의 그래픽 XML 파일로 그래픽이나 애니메이션을 정의한다. 그 리는 작업은 안드로이드 시스템이 담당한다. onDraw() 메소드 안에 draw...() 와 같은 메소드를 호.
Presentation transcript:

안드로이드 세미나 김동민

30장. 서비스 구현

개요 안드로이드 서비스 액티비티와 연결돼있지 않아도 끊김 없이 실행해야 하는 기능을 구현하는데 사용된다 음악재생 프로그램 액티비티와 연결돼있지 않아도 끊김 없이 실행해야 하는 기능을 구현하는데 사용된다 음악재생 프로그램 Feed 서비스 RSS Atom 채팅 프로그램

개요 안드로이드 서비스의 시작 안드로이드 서비스의 주의사항 수동으로 시작하기 자동으로 시작하기 API를 호출 자동으로 시작하기 IPC(프로세스간의 통신)를 사용 안드로이드 서비스의 주의사항 서비스는 더 이상 필요 없을 때까지, 또는 메모리를 더 많이 확보해야 할 때까지 실행 된다 이로인해 CPU와 무선랜의 사용량이 많아져서 배터리의 사 용시간이 줄어들 수 있다

안드로이드 서비스 클래스의 구현은 액티비티의 구현과 비슷하다 서비스 클래스 구현 과정 안드로이드 SDK에서 제공하는 서비스용 기본 클래스 상속 새로운 서비스를 구현하는데 필요한 메소드를 오버라이드 AndroidManifest.xml 파일에 적절한 내용을 넣어 안드로이 드 시스템과 연동 안드로이드 서비스 클래스의 구현은 액티비티의 구현과 비슷하다

서비스 클래스 서비스 클래스의 세 가지 생명주기 onCreate() onStart() onDestroy() 서비스가 생성될 때 호출 onStart() 다른 프로세스에서 서비스를 수동으로 시작 할 경우 onDestroy() 서비스가 종료될 때 호출

서비스 클래스 WeatherPlusService 클래스의 onCreate() method HttpClient 인스턴스 생성 표시할 텍스트 형식 세팅 LocationManager 인스턴스를 얻어옴 LocationProvider 를 사용 / 위치 변경시 변경사항을 업데이트 받는 리스너 등록

서비스 클래스 WeatherPlusService 클래스의 onDestroy() method 안드로이드 내부 종료 작업 처리 위치 변경 사항 업데이트를 더 이상 사용하지 않게 함

서비스 클래스 onBind() method onCreate() / onDestroy() 메소드 외에 구현해야 할 메소드 Ibinder 객체를 리턴 Ibinder 는 IPC 구조의 핵심에 위치한 클래스

프로세스 간 통신 IPC AIDL 액티비티나 안드로이드 내부의 다른 컴포넌트와 통신할 수 있게 해주는 방법 액티비티나 안드로이드 내부의 다른 컴포넌트와 통신할 수 있게 해주는 방법 서비스는 IPC를 통해 어떤 메소드를 호출할 수 있는지 선언 해당 메소드는 IPC를 통해 다른 컴포넌트가 직접 호출해서 사용 AIDL 개발자는 AIDL로 공개 인터페이스를 정의 안드로이드는 해당 AIDL로부터 지정된 인터페이스에 맞게 서버와 클라이언트 프로그램을 작성할 수 있는 도구를 제 공

AIDL AIDL 작성 IDL 프로그래밍 언어에 중립적인 형태로 작성 AIDL 자바 인터페이스와 비슷한 형태를 가짐

AIDL AIDL 작성 방법 자바 인터페이스와의 차이점 패키지 지정 메소드 정의 부분은 인터페이스 내부에 정의 데이터 타입 제한 기본 데이터 타입 int, float, double, boolean 등 String, CharSequence 클래스 List, Map(java.util 패키지) AIDL 로 정의된 타입 Parcelable 인터페이스를 구현한 모든 클래스, Parcelable은 안드로이드에서 사용하는 직렬화 방법 서비스 내에서의 예외 처리 서비스 내에서 발생하는 모든 예외는 try-catch 로 처리 오류상황에 대한 결과는 에러코드 등의 다른 방법으로 전달

AIDL AIDL 구현 과정 AIDL이 생성한 .stub 클래스의 인스턴스 생성 Service 를 상속받은 클래스의 onBind() 메소드에서 stub 클래스의 인 스턴스를 새로 생성해 리턴

AndroidManifest 정의 인터페이스에 구현된 서비스를 사용하기 위해서 AndroidManifest.xml 파일에 정의 Service 엘리멘트의 android:name 속성에 서비스 클래스 이름을 지정 마침표만 사용해서 기본패키지에 속하는 것을 표현

IPC 클라이언트 호출 IPC Intent 클라이언트가 서비스를 호출하는 단방향 통신만 지원 클라이언트를 호출하는 것이 가능은 하지만, 해당 액티비티가 실 행중인지 확신할 수 없기때문에 정상적으로 동작하지 않을 가능 성이 존재함 AIDL 을 적절하게 활용하면 서비스가 액티비티의 특정 기 능을 호출하게 할 수도 있다 Intent 서비스에서 Intent 를 던져주면 특정 액티비티가 Intent 를 받아 처리할 수 있게된다 특정 액티비티가 현재 실행중이여야 가능함

IPC 클라이언트 호출 HTTP 요청을 전송하여 결과를 받아옴 Forecast 객체로 변환 Forecast 객체 데이터를 사용하여 HTML 페이지 생성 SendBroadcast() 메소드를 통해 미리 정의된 인텐트 인스턴스를 관심있는 모든 모든 컴포넌트에게 전달하게 된다

Q & A

31장. 서비스 호출

서비스 호출 적당한 시간 이상 실행되는 액티비티나 컨텐트 프로바이더, 컴포넌트 는 얼마든지 서비스를 호출해서 사용이 가능하다 인텐트만을 수신하는 리시버의 경우 인텐트 하나를 처리한 이후 종료 되기 때문에 서비스를 호출할 수 없다 서비스 기능을 호출하기 위한 방법 해당 서비스에 대한 AIDL 확보 AIDL 에 포함된 특정 메소드를 호출 기능을 모두 사용한 이후 확보했던 인터페이스를 해제

바인딩 서비스를 사용하기 위한 준비 작업 서비스를 사용하려면 먼저 ServiceConnection 클래스 를 상속받아 새로운 클래스를 구현해야 한다 ServiceConnection 클래스 란? 특정 서비스를 대상으로 IPC 호출을 처리하는 서비스와의 연결을 의미함

바인딩 onServiceConnection() onServiceConnected() 메소드 액티비티가 원하는 서비스와 연결될 때 호출 onServiceDisconnected() 메소드 서비스와의 연결이 정상적으로 종료됐을 때 호출 onServiceConnection() 연결하려는 서비스를 가리키는 ComponentName 과 IPC를 호출하기 위한 IBinder 인스턴스를 넘겨받음 IBinder 인스턴스를 AIDL에 정의된 인터페이스 클래스로 형변환 하 면 일반적인 자바 메소드를 호출하는 것처럼 서비스의 원하는 메소 드를 호출하는 IPC 를 실행할 수 있다

바인딩 bindService() method 액티비티를 특정 서비스에 연결하기위한 액티비티 메소드 호출하려는 서비스를 가리키는 Intent 직접 작성한 서비스를 호출하는 경우 해당하는 클래스 이름을 직접 지정한 인텐트를 사용할 수 있다 new Intent (this, WeatherPlusService.class) ServiceConnection 인스턴스 옵션 설정 플래그 대부분의 경우 BIND_AUTO_CREATE 값을 넘겨줌 BIND_AUTO_CREATE 의 경우 해당 서비스가 실행중이지 않을 경우 서비스를 자동으로 시작시 킴

서비스 호출 인터페이스 객체를 통해 서비스 기능을 호출하는 단계 서비스 기능을 호출할 경우 처리해야 할 두가지 예외 DeadObjectException 발생하면 서비스 연결이 비정상적으로 종료되었음을 의미함 연결이 끊겼을 때의 절차를 수행해야 함 필요한 경우 onServiceDisconnectied() 메소드를 수동으로 호출해야 함 RemoteException 프로세스간의 연결 과정에 문제가 있음을 나타내는 범용예외 상황 발생한 경우 서비스와의 연결을 새로 초기화 하는것이 좋다

서비스 연결 해제 서비스 기능을 종료하는 단계 예제 IPC 호출을 모두 사용한 이후 ServiceConnection 인스턴스를 인자값 으로 넘기면서 unbindService() 를 호출 이후 onServiceDisconnected() 메소드가 호출 서비스 인터페이스가 담겨있던 변수에 null 값을 설정하여 더 이상 인터페이스를 사용하지 못하게 된다 이후 서비스와 관련한 위젯이 있다면 모두 비활성화하고 프로그램 내부에서 서비스와 연결이 끊겼다는 사실을 인지하게 해야한다 예제 onServiceDisconnected() 가 호출될 경우 서비스 객체를 null 값으로 처리한다

수동 실행 수동으로 서비스 실행 하기 startService() 메소드 stopService() 메소드 IPC를 사용하지 않고 수동으로 서비스의 실행/종료 가 가능 액티비티 실행 여부와 관계없이 해당 서비스를 계속 실행시킬 수 있다 startService() 메소드 수동으로 서비스를 실행하기 위한 메소드로 두개의 인자를 사용 실행할 서비스를 가리키는 Intent 인스턴스 필요한 설정 사항을 담은 Bundle 인스턴스 이후 서비스의 onStart() 메소드에 직접 전달된다 stopService() 메소드 서비스를 종료하기 위한 메소드 startService() 에서 사용된 서비스를 가리키는 Intent만 지정하면 된다

데이터 수신 onResum() / onPause() 메소드 서비스에서 지정한 액션에 해당하는 인텐트 필터를 사용하여 특정 인텐트를 받음 그리고 static 으로 정의된 BroadcastReceiver 인스턴스로 인텐트를 처리하도록 리시버를 등록 등록했던 BroadcastReceiver를 등록 해제해 일시정지 상태에서 해당 인텐트를 더 이상 받지 않도록 설정한다

데이터 수신 BroadcastReceiver 전달받은 일기예보 정보를 사용자 인터페이스에 업데이트

데이터 수신 updateForecast() 인터페이스 stub을 사용하여 서비스 메소드를 호출해 최신 날씨 정보를 가져온다 날씨 정보가 준비되지 않은 경우 처리하게 될 부분

WeatherPlus 서비스 클라이언트 예제

Q & A

32장. 사용자 알림

사용자 알림 사용자 알림이 필요한 경우 사용자 알림 사용 예 전화/SMS/E-mail 수신 배터리가 부족한 경우 알람 시계 팝업 메시지 트레이 아이콘 풍선 도움말

알람 메시지 NotificationManager 클래스 안드로이드에서 알림 메시지를 사용하는 기본적인 방법 시스템 서비스의 하나로서 액티비티에서 getSystemService 메소드를 호출해 인스턴스를 확보하여 사용가능 하다 NotificationManager 클래스에서 제공하는 메소드 notify() 알림 메시지를 전달 Notification 객체를 넘겨받아 사용하는데, 이 객체는 알림 메시지를 표 시하는데 필요한 각종 정보가 담겨있다 cancel() / cancelAll() 알림 메시지를 중단

알람 메시지 Notification 클래스에 정의된 설정 값 기기 알림 메시지 사용자가 휴대폰에서 발생한 알림을 인식하게 하는데 필요하다 Lights 해당 변수에 true 값을 설정하면 휴대폰의 LED 불빛을 깜박일 수 있다 Notification.DEFAULT_LIGHTS (안드로이드 버전 1.5 이상) 소리 설정 ContentManager 에 등록된 소리파일을 가리키는 Uri를 Notification에 설정하면 해당 파일 소리를 재생할 수 있다 휴대폰 진동 long 배열에 밀리세컨드 단위로 간격을 지정한 진동 패턴을 vibrate 변 수에 설정

알림 메시지 아이콘 휴대폰에서 발생한 알림이 어떤 것인지 확인하는데 필요하다 확인 이후 다음단계로 진행하는 것을 도와주는 것이 아이콘이다 사용자가 아이콘을 클릭했을 때 전달할 PendingIntent 인스턴스를 지정 setLatestEventInfo() 메소드를 사용하여 아이콘과 인텐트, 보조 문자열을 한꺼번에 지정할 수 있다

예제 Notification/notify1 예제 프로젝트 실행

Q & A