슬라이드 1

Similar documents
콘텐츠 PowerPoint 디자인

Microsoft PowerPoint App Fundamentals[Part2].pptx

안드로이드 서비스

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

안드로이드2_09

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

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

제11장 프로세스와 쓰레드

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

Microsoft PowerPoint App Fundamentals[Part1].pptx

Microsoft PowerPoint - CSharp-10-예외처리

THE TITLE

슬라이드 1

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

슬라이드 1

[Brochure] KOR_TunA

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

( )부록

슬라이드 1

SKT UCC DRM

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

유니티 변수-함수.key

PowerPoint Presentation

오버라이딩 (Overriding)

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

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

JAVA PROGRAMMING 실습 08.다형성

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint Presentation

C++ Programming

서현수

PowerPoint 프레젠테이션

1부

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

PowerPoint Presentation

Windows 8에서 BioStar 1 설치하기

비긴쿡-자바 00앞부속

PowerPoint Presentation

자바 웹 프로그래밍

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

gnu-lee-oop-kor-lec10-1-chap10

윈도우시스템프로그래밍

구글안드로이드프로그래밍액티비티, 인텐트수신자, 그리고서비스 안드로이드애플리케이션의구성요소에는액티비티, 인텐트수신자, 서비스, 컨텐트제공자가있다. 이번호에서는사용자인터페이스를위한액티비티와백그라운드서비스를위한인텐트수신자, 그리고서비스의라이프사이클과활용법에대해살펴보도록하자.

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JAVA PROGRAMMING 실습 05. 객체의 활용

쉽게 풀어쓴 C 프로그래밍

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

MVVM 패턴의 이해

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft Word - src.doc

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

제8장 자바 GUI 프로그래밍 II

Microsoft PowerPoint - additional08.ppt [호환 모드]

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

JMF3_심빈구.PDF

PowerPoint Presentation

Facebook API

JVM 메모리구조

PowerPoint 프레젠테이션

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

02 C h a p t e r Java

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

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

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

슬라이드 1

Chapter 1

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Network Programming

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

Interstage5 SOAP서비스 설정 가이드

PowerPoint Presentation

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

윈도우시스템프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

C++ Programming

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

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx


CODESYS 런타임 설치과정

PCServerMgmt7

Cloud Friendly System Architecture

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

Microsoft PowerPoint - 안드로이드 개발 환경 구축(170411)

슬라이드 1

Transcription:

2 조곽철용이현우김지혜

service 설명 Binder 설명 Service 에 Activity Binding Background 작업자 Thread 이용 예제 참고사이트 1

Service = Deamon = Background Program Ex) 휴대폰에문자를보내면서배경음악이나온다면문자를보내기위해사용자에게제공되는 Activity 이외에보이지않지만 MediaPlayer 가음악을재생 ->android 의 service 2

background 에서실행 비활성 Activity 보다더높은우선순위우선순위활성프로세스 > 화면에보이는프로세스 > 시작된서비스프로세스 > 백그라운드프로세스 > 빈프로세스 사용자입력에직접의존하지않는동작을규칙적이며연속적으로수행에용이 ex)alarm 을사용해, 주기적으로서버정보전송 서비스의시작과종료는다른애플리케이션 ( 다른 Service, Activity, broad cast 수신자를포함 ) 으로부터가능 3

서비스활용사례 별도의 Thread 를통해서사용가능 - 파일다운로드 -Media Player 안드로이드소프트웨어스택내의서비스사용 -Location Manger -Media Controllier -Alarm Manager 4

Service 와 Binding 의서비스생명주기 5

인텐트오브젝트받을수있는시점 Service is started by startservice() Service is created by bindservice() oncreate() oncreate() Active Entire Life time Life time Oncreate()-onDestroy() onstop() 메쏘드는없다. onstart() Service is running The service is stoped(no callback) onbind() Client interacts with the service onunbind() onrebind() ondestroy() ondestroy() Service is shut down Service is shut down 6

두생명주기가서로분리된것이아님 Ex) Background 에뮤직서비스 startservice() 호출에의해시작 -> 제어하거나재생중인음악정보 bindservice() 를호출 ->Activity 가그 Service 에대한커넥션생성가능 이경우, stopservice() 는마지막바인딩이닫힐때까지그서비스를유지 7

서비스생성및제어 Activity Service MyService class 를만들어, 서비스를상속 MyService 에 oncreate(), onstart() 메소드제정의 Mainfest 에새로만든 Service 등록 MyController startservice() stopservice() MyService oncreate() onstart() ondestroy() Mycontroller class 에서 startservice() 를통해 MyService 시작. 한번생성된서비스를다시실행할때는 onstart() 실행 여러번시작한서비스라도 stopservice() 로한번만에종료 8

암시적서비스실행 startservice(new Intent(MyService.MY_ACTION); 명시적서비스실행 startservice(new Intent(this, MyService.class); MyService class 에 MY_ACTION 을포함 Intent 필더에 MY_ACTION 을공급자로등록해야함 9

서비스명을통한서비스종료 ComponentName service = startservice(new Intent(this, M yservice.class); stopservice(new Intent(this, servic e.getclass()); 명시적서비스종료 try{ Class serviceclass = Class.forName(service.getClas sname()); stopservice(new Intent(this, service Class); }catch(classnotfoundexception e){} stopself() or stopselfresult(): 서비스스스로종료하기 (Activity 의 finish() 와동급 ) 10

Linux Kernel 에있는 Binder 를통해관리 11

Binder 란? Application 과 Services 들이서로다른프로세스에서실행중인경우, 프로세서간의통신및데이터공유의관련문제가발생 -> 이때 IPC 를통해프로세스간통신 ( 필연적으로 IPC 통신의경우, 시스템오버헤드및보안관련문제를야기할수있는가능성이항상존재 ) 12

Binder 란? Android Binder 는 IPC 통신을제공하는프로토콜 - 공유메모리를통한성능향상, 프로세서마다요청처리를위한스레드풀 - 오브젝트맵핑과레퍼런스카운팅기능제공 - 바인더를통해 IPC 가이루어질때는기본적으로는동기방식 - 요청한프로세서는요청결과를얻을때까지대기상태 13

ServiceManager->BinderDriver에대한 special Node 0 로동작 ServiceProvider-> 자신의 RPC에대한 Interface를 ServiceManager proxy object에대한 Interface를통해등록 - 이과정을통해 BinderDriver에서는 ServiceProvider로의 path 를생성 Service User-> 사용하려는 Service에대한 Interface를생성위해 ServiceManager에게 RPC call을통해요청 ServiceManager-> Bind되어있는 Object들의목록에서해당하는 ServiceProvider에대한 Node를요청한 ServiceUser에게 return ServiceUser-> return된 Node정보를통해해당 Service Provider 로의 RPC를수행 인용 ) http://andstudy.springnote.com/pages/4314107 / 수원안드로이드플랫폼스터디 14

Service 에서 Binder 를사용하는이유 Activity 가 service 에 Binding 되면, 그 Activity 는해당서비스인스턴스자체에대한레퍼런스를유지. 실행중에서비스에대해메서드를호출가능 15

Service 에서 Binder 를사용하는이유 Service 가 Binding 된후, Service 가가지고있는모든 public 메서드와프로퍼티는 onserviceconnected 핸들러를통해서얻어진 servicebinder 객체를통해서이용가능 16

Service 에서 Binder 를사용하는이유 일반 Service 는 Client 가서비스의동작을알지못하게은밀히동작그러나 Binding 된 Service 는 Activity 가상태를파악하고제어 17

Service 에서 Binder 를사용하는이유 Broadcast 인텐트또는 Service 시작시사용되는인텐스익스트라번들을이용해서간단히다른프로세스로실행중인서비스와간단히통신가능 좀더단단히결합된연결을원할경우에는 AIDL 이용 18

서비스작성순서 Activity MyController bindservice() unbindservice() 4 Service MyService oncreate() onbind() 2 ServiceConnection onserviceconnected() onservicedisconnected() 3 Binder 1 MyBinder getstatus():myservice 19

서비스동작 Activity MyController bindservice() unbindservice() ServiceConnection onserviceconnected() onservicedisconnected() 3.Linstener 인 ServiceConnection 의 onserviceconnected 호출 1. 호출 Service MyService oncreate() onbind() 2.IBinder 타입인 MYBinder 객체생성 Binder linux 20

Process thread thread Process Service ~.apk Activity DVM DVM Task Process ~.apk Activity DVM thread 21

백그라운드의 thread 의필요성모든콤포넌트는하나의 Main thread 위에서동작 -> 시간이많이걸리는작업시, 화면에보이는 Activity 외에다른모든콤포넌트호출 -> "Application Unresponsive" 메시지가출력 느리고시간이많이드는작업으로 Main thread 에서 child thread 로옮기는것을추천 22

Application Unresponsive Error 란? - 안드로이드는 Activity 관리자, 윈도우관리자를통해반응. 이두서비스중하나가반응이느린애플리케이션을감지시애플리케이션의반응이느림을알리는 AUR 에러메시지출력 - 에러는모달 (modal) 로, 포커스를빼앗으며사용자가버턴누르거나애플리케이션이반응하기시작할때까지대기 23

추천하는백그라운드 thread 활용 - 키누른후, 입력에대해서 5 초이내에무반응 -Broadcast Receiver 가 onreceive Handler 를 10 초이내에완료불가시 24

문제를일으키는주요원인이되는작업 - 파일작업 - 네트워크조회 - 데이터베이스트랜잭션 - 복잡한계산 25

새로운 thread 와 GUI 작업을위한 thread 동기화 Foreground Main Thread mainprocessing() Thread Background Child Thread backgroundthread Processing() updategui() Handler Handler.post(..) 26

- 골격코드 // GUI Handler 처리.. private Handler handler = new Handler(); // 이메서드는메인 GUI 스레드에서호출 private void mainprocessing(){ // 이는시간이많이드는작업을자식스레드로옮김 Thread thread = new Thread(null, dobackgroundthreadprocessing, "Background"); thread.start(); } // 백그라운드처리메서드를실행하는 Runnable private Runnable dobackgroundthreadprocessing = new Runnable(){ @Override public void run() { backgroundthreadprocessing(); } }; // 백그라운드에서몇가지처리를수행하는메서드 private void backgroundthreadprocessing(){ //[ 필요한코드 ] // 처리가끝나고결과를 UI로출력을해야할때아래핸들러를추가해서사용 handler.post(doupdategui); } // GUI 업데이트메서드를실행하는 Runnable private Runnable doupdategui = new Runnable(){ @Override public void run() { updategui(); } }; private void updategui() { // [[ 필요한 UI 코드 ]] 27

Thread 를만드는핵심코드 private void mainprocessing(){ Thread thread = new Thread(null, dobackgroundthreadprocessing, "Background"); thread.start(); } -> Thread(ThreadGroup group, Runnable runnable, String threadname) 28

Thread 와 GUI 연결을위한핵심코드 handler.post(doupdategui); ->post(runnable r) Handler 를사용하는이유모든 GUI 는 Main thread 가가지고, Child Thread 는 GUI 가없음 View, Toast 등은모두 Main thread 에서처리해야됨따라서 handler 를통해서 child thread 의처리결과를 Main thread 에서처리가능 29

Handler 클래스의추가메소드 -pastdelayed: 포스팅을늦추어처리 -pastattime : 포스팅을특정시간에실행 UIThreadUtilities 클래스이클래스는 runonuithread 를갖고있어서 View, Activity, Dialog 와같은 thread 에서메소드를강제적으로실행 30

Thread 에서꼭기억해야할사항 애플리케이션컴포넌트에서알림과인텐트는항상 GUI Thread 에서수신되고처리 다른모든경우에있어, GUI Thread 에서생성된객체와명시적으로상호작용하거나메시지를표시하는작업은 MainThread 서띄워져야만함 31

Media Player 32

화면없이뒤에서실행되는기능 현재사용자가화면 (Activity) 를보고있지않아도 Background 에서실행되는 Service 로 문자를보내거나, 다른작업중에도음악이재생 33

새프로젝트생성 34

안드로이드프로젝트생성 35

프로젝트 name 입력 36

가상머신설정 37

패키지네임입력 38

Package Explorer 에새패키지가생성된것을확인 39

Main.xml 에버튼생성 40

버튼이름및텍스트수정 41

수정상황확인 42

MusicplayerAct ivity.java 의소스코드입력. Play 버튼과 Stop 버튼클릭시효과설정 43

새 class 생성 44

ServiceClass 생성 45

생성된모습 46

사용할것들을 import 47

소스코드입력 Rec 폴더의 raw 폴더내 music.mp3 파일재생및정지설정 48

오류발생 49

해결방법 Rec 폴더에 File->New- >Folder 로 raw 폴더생성후, mp3 파일을드래그해서입력 R.java 이자동인식을못함으로발생되는듯 50

Manifes 수정 Serviceclass 를지정 51

컴파일 52

실행확인 Home 이나 backkey 를눌러화면이전환되어도재생가능 53

안드로이드사이드 - 강좌 / 학습 http://www.androidside.com/plugin/mobile/board.php?bo_table=b 46&wr_id=13275&sca=%EC%9A%A9%EC%96%B4%EC%A0%95%EB%A6% AC [PAAD 08 장 ] 백그라운드에서작업하기 http://www.androidpub.com/102370 안드로이드 (Android)& 이 - 파리 (e-passport Lead) 란? http://blog.naver.com/menusys?redirect=log&logno=112936893 Android service 만들어보기예제 http://blog.naver.com/postview.nhn?blogid=rosaria1113&logno=9 3035557&redirect=Dlog&widgetTypeCall=true 아마추어역학인 raw cannot be resolved or is not a field error 해결 http://blog.naver.com/asiakth?redirect=log&logno=11013474227 5 54