2학년 2학기/모바일프로그래밍

14주차

밍이라구 2023. 12. 4. 19:08

*서비스(Service) : 화면(UI) 없이 동작하는 프로그램을 말함

- 다른 말로 데몬(Daemon), 백그라운드 프로세스(Background Process)라고 함

-액티비티 응용프로그램은 화면(액티비티)이 종료되면 동작하지 않지만

서비스는 ㅂㄱ그라운드에서 실행되므로 화면과 상관없이 계속 동작함

(V3, 알약, 카톡 프로그램, 물론 서비스도 상황에 따라 죽을 수 있음)

-서비스는 매니페스트 파일 (AndroidManifest.xml)안에 <service>태그를 이용하여 선언

-서비스는 다른 구성 요소들처럼 메인 스레드에서 동작

-> 따라서 CPU를 많이 쓰거나 대기 상태(blocking)를 필요로 하는 작업들은 

스레드를 새로 만들어 주어야 함.

 

*서비스 3가지

- 포그라운드 서비스 : 알림창에 서비스가 실행 중임을 표시하며 강제 종료되지 않음.

- 백그라운드 서비스 : 사용자에게 보이지 않는 백그라운드에서 수행하며 강제 종료 가능함.

- 바인드 서비스 : bindService()호출하여 클라이언트 -서버로 상호 작용함

 

-API 26 이상에서는 백그라운드 서비스를 제한함 -> 포그라운드 서비스로!

-> 권한 설정

-> <uses-perimission android:name="android.permission.FOREGROUND_SERVICE"/>

-포그라운드 서비스 실행

if(Build.VERSION.SDK_INT > VERSION_CODES.O) startFOregroundService(this)

else startService(this)

 

*서비스 생명주기

 

*서비스 작성

(1) 서비스 클래스 작성

public class MusicService extends Service{

}

(2)AndroidManifest.xml <application> 안에 등록

<service .../>

(3) 서비스 실행 및 종료

Intent intent = new Intent(this, MusicService.calss);

startService(intent);

...

stopService(intent);

 

/////////////////////////////////////////////////////////////////////////////////////////

(1) 서비스 클래스 작성

public class MusicService extends Service {

IBinder mB

 

*스레드와 서비스 차이

-서비스는 모든 액티비티 종료 후에도 기능이 동작하고 다른 패키지에서도 사용 가능함

 

*서비스 : IntentService -> JobIntentService

-서비스 상속 받음, 순차적 처리, 긴 작업 처리 가능(10분 내로..)

-Queue 가 모두 비면 종료 ! 자신 업무가 끝나면 종료되는 특징

*MusicService 작성

-[New] - [jaa Class] -> [Create New Class]에서 MusicService

- /res/raw/song1.mp3 추가

*브로드캐스트 리시버(BR, Broadcast Receiver)

-안드로이드는 문자 메시지 도착, 배터리 방전, SD카드 탈부착, 네트워크 환경

변화 등이 발생하면 방송(Broadcast) 신호를 보내는데, 이런 신호를 받아서 처리하는 것이 리시버임

-브로드 캐스트 리시버의 대표적인 응용은 배터리 상태 확인

 

*브로드캐스트 리시버

-수신자가 매니페스트 파일에 등록되었다면 따로 시작시키지 않아도 됨

-애플리케이션은 컨텍스트 클래스의 registerReceiver()메소드를 이용하면 런타임 시에도 수신자를 등록할 수있음

-서비스처럼 브로드캐스트 수신자도 UI가 없음

-브로드캐스트를 이용해서 처리하면 백그라운드(background)로 동작하므로 사용자가 모름

*구분

-일반 브로드캐스트(sendBroadcast() 메소드로 호출)

->비동저기적으로 실행되며 모든 수신자는 순서 없이 실행됨(때로는 동시에 실행됨)

-순차 브로드캐스트(sendOrderedBroadcast() 메소드로 호출)

->한 번에 하나의 수신자에만 전달되므로 순서대로 실행됨.

중간에 취소하면 그 다음 수신자는 받지 못함.

수신자가 실행되는 순서는 인텐트필터의 속성으로 정할 수 있음(순서가 같으면 임의로 실행됨)

 

*배터리 상태를 표시해주는 앱

-배터리 상태 이미지를 복해서 추가

 

 

 

*콘텐트 프로바이더(Content provider)

-안드로이드는 보안상 앱에서 사용하는 데이터를 외부에서 접근할 수가 없음

-파일이나 데이터베이스를 외부 앱에서 사용하도록 하려면 콘텐트 프로바이더

(content provider : 줄여서 CP)를 만들어서 외부로 제공 -> 앱 간 데이터 공유

*URI(Uniform Resource identifier)

-URI는 콘텐트 프로바이더에서 제공하는 데이터에 접근하기 위한 주소

-URI는 "content://패키지명/경로/아이디" 형식으로 지정

* 안드로이드 제공 콘텐트 프로바이더

-안드로이드 자체적으로 제공하는 것

 

 

 

 

 

 

 

 

 

 

 

 

 

'2학년 2학기 > 모바일프로그래밍' 카테고리의 다른 글

13주차  (0) 2023.12.04
12주차  (0) 2023.12.04
11주차  (0) 2023.12.04
10주차  (0) 2023.12.04
9주차  (0) 2023.12.04