참고
blog.naver.com/getinthere/221695417720
--
현재프로젝트
https://github.com/jaybon1/androidwork/tree/master/serviceTest
서비스 최초실행시에는 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
클라이언트와 서비스가 모두 동의한 프로그래밍 인터페이스를 정의하여 프로세스 간 통신(IPC)으로 서로 통신하게 할 수 있습니다.
인터페이스를 정의하고 추상메서드를 만든다
그리고 정보만 받아서 바인드하여 사용
메서드를 여러개 만들어도 되지만
메서드 하나만 만들어서 this를 리턴하면 레퍼런스에 접근할 수 있다
--
'App > Android' 카테고리의 다른 글
안드로이드 // 개발중 앱이 2개 설치될때 (0) | 2020.08.25 |
---|---|
안드로이드 // 서비스 연습2 카운터 앱 (0) | 2020.08.18 |
안드로이드 // 글라이드 glide 정리 (0) | 2020.08.17 |
안드로이드 // MVVM-DataBinding-FireStore 테스트 (3) | 2020.08.16 |
안드로이드 // 레트로핏, retrofit2 연습 (0) | 2020.08.14 |