참고

blog.naver.com/getinthere/221695417720

 

안드로이드 6강 - (1) 서비스

1. 서비스 생명주기2. MP3 플레이어 만들기서비스는 액티비티가 죽어도 명시적으로 죵료하지 않으면 계속...

blog.naver.com

--

 

현재프로젝트

https://github.com/jaybon1/androidwork/tree/master/serviceTest

 

jaybon1/androidwork

Contribute to jaybon1/androidwork development by creating an account on GitHub.

github.com

 

 

서비스 최초실행시에는 startService(onStartCommand) // 재실행시에는 bindService(onBind) // 종료시에는 unBind

--

 

 

백그라운드 실행, 알림 등

--

 

 

--

 

 

--

 

 

--

 

 

서비스 - 이렇게 생성해야 매니페스트에 등록된다

--

 

 

--

 

 

연습을 위해 함수들에 로그를 입력하자

--

 

 

뷰 세팅

--

 

 

메인액티비티에서 뷰를 연결하고

--

 

 

서비스를 실행해본다

--

 

 

실행해보면 로그에 보인다

--

 

 

서비스엣어 미디어플레이어 레퍼런스 생성 

 

음악을 실행하는 방법 (MyService파일)

 

음악종료시 (MyService파일)

--

 

 

메인액티비티에서 서비스의 레퍼런스를 받을 수 있는 방법이 없다
서비스에서 메인액티비티의 레퍼런스를 받을 수 있는 방법이 없다
서로 제어권이 없다(다른애플리케이션이라고 봐야됨)

---

 

--

 

 

지금 상태는 서비스를 날리는 것이기 때문에 음악 일시정지를 할 수 없다

바인더를 이용해야한다

--

 

 

마샬링

ex) user.java 의 필드가 있다면 직렬화하여 json으로 받아오면된다(메모리를 가져오는 것이아니라 데이터를 가져오는것)
메서드는 문자열로 가져오면 원복이 안된다

이때 마샬링 기법을 사용한다(오브젝트를 들고 오는 것)
서로의 메서드가 동기화 되어있어서 동적인 메서드 사용가능

- MBV(Marshal By Value)

- MBR(Marshal By Reference)

안드로이드에서는 마샬링 대신 AIDL을 사용

https://developer.android.com/guide/components/aidl?hl=ko

 

안드로이드 인터페이스 정의 언어(AIDL)  |  Android 개발자  |  Android Developers

AIDL(Android Interface Definition Language)은 전에 다뤄본 다른 IDL과 유사합니다. 클라이언트와 서비스가 모두 동의한 프로그래밍 인터페이스를 정의하여 프로세스 간 통신(IPC)으로 서로 통신하게 할 수 �

developer.android.com

 클라이언트와 서비스가 모두 동의한 프로그래밍 인터페이스를 정의하여 프로세스 간 통신(IPC)으로 서로 통신하게 할 수 있습니다.

인터페이스를 정의하고 추상메서드를 만든다
그리고 정보만 받아서 바인드하여 사용

메서드를 여러개 만들어도 되지만

메서드 하나만 만들어서 this를 리턴하면 레퍼런스에 접근할 수 있다

--

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts