본문 바로가기

Android Studio (Kotlin)

Kotlin 클래스

object class

  • object라는 키워드로 선언, 싱글턴 클래스가 된다
  • 생성자를 가질 수 없다.
  • 어느 클래스, 함수에서든 별도의 객체화 과정 없이 접근 가능하다. 
  • 프로그램이 실행되는 동안 저장된 데이터는 손실되지 않고 프로그램이 종료되면 소멸한다.
  • 액티비티, 프래그먼트 구분하지 않고 데이터를 전달할 수 있다.

Service

서비스란? 일반적으로 화면 없이 동작하는 프로그램으로 백그라운드 프로세스. 화면과 상관 없이 계속 동작한다.

 

서비스의 특징

  • 유저와 상호작용 할 수 없다.
  • 액티비티의 생명주기에 종속되어 있지 않다.
  • 별도의 스레드에서 동작하지 않고 호스팅 프로세스의 "메인 스레드"에서 작동한다.
  • 액티비티가 비활성화 되면 액티비티보다 우선순위가 높다.

실행 방법 : startService, bindService

startSetvice

  • 앱 내의 액티비티같은 컴포넌트가 호출했을 때 실행된다.
  • 백 그라운드에서 한가지 일을 하며, 결과를 호출했던 컴포넌트에게 보내지 않는다.

bindServce

  • startService와는 다르게 자신을 호출했던 컴포넌트와 인터랙션을 주고 받을 수 있다.
  • 처리한 결과를 주고 받을 수 있다.
  • 서로 다른 프로세스 상에 있어도 처리가 가능하다.

StartService

startService 생명주기

서비스 시작 요청과 중지 요청은 Activity에서 호출된다. 서비스가 시작되고 순서에 따라 onCreate(), onStarCommand()가 호출된다. 중지 요청이 되면 onDestroy()가 호출되고 서비스가 종료된다.

  • onCreate() : 서비스가 처음 초기화 될 때 수행되는 메소드
  • onStartCommand : Service를 다른 컴포넌트가 호출했을 시 수행되고, 이 메서드를 통해 서비스가 백그라운드에서 동작한다.
  • 리턴해줘야 하는 3가지 값
  •   START_NOT_STICKY : 서비스가 시스템에 의해 종료되었을 때 PendingIntent가 따로 있지 않다면 다시 생성하지 않음
  •   START_STICKY : 시스템에 의해 종료되어도 다시 생성, 그러나 마지막 intent를 다시 전해주지는 않음(default)
  •   START_REDELIVER_INTENT : 시스템에 의해 종료되어도 서비스는 물론 전달되었던 intent 값까지 모두 유지. 파일 다운로드처럼 중간에 값을 잃으면 안되는 경우 적합하다.
  • onDestroy : 다른 컴포넌트에서 startService()로 호출할 경우 onStartCommand가 실행, stopService나 stopSelf()가 호출되면 서비스가 동작을 멈추고 시스템이 onDestroy하는 사이클

 

 

'Android Studio (Kotlin)' 카테고리의 다른 글

Kotlin 기본 문법  (0) 2022.04.04
코틀린 컬렉션과 예외처리  (0) 2022.04.04
안드로이드 UI 기본  (0) 2022.04.03
Android Architecture  (0) 2022.04.03
EditText 빈 값일 때 toast 띄우기, toast 창이 안뜰 때  (0) 2022.03.29