Service onStartCommand

Android 2015. 6. 2. 09:12

android로 간단한 서비스 구현시 필요한 건 다음 2~3가지 정도이다.

  1. extends Service

  2. onStartCommand  (return START_STICKY)

  3. onBind {return null;} ==>Bind형 서비스 용도  : AIDL과 함께 사용하는 참고 사이트

  4. onDestroy

 

서비스에서 제일 중요한 함수는 onStartCommand라고 할 수 있는데

최초 실행시에는 onCreate->onStartCommand순으로 호출되고

실행중 재호출시에는 onStartCommand로 바로 호출되기 때문이다..

 

 

서비스의 onStartCommand에는 3가지 return type을 가질수 있다.

 

보통은 특정파라미터가 없다면, START_STICKY를 쓰면 된다. (자동 재구동)

 

 

참고사이트:

 


START_STICKY : Service가 강제 종료되었을 경우 시스템이 다시 Service를 재시작 시켜 주지만 intent 값을 null로 초기화 시켜서 재시작 합니다.

Service 실행시 startService(Intent service) 메서드를 호출 하는데 onStartCommand(Intent intent, int flags, int startId) 메서드에 intent로 value를 넘겨 줄 수 있습니다. 기존에 intent에 value값이 설정이 되있다고 하더라도 Service 재시작시 intent 값이 null로 초기화 되서 재시작 됩니다.

START_NOT_STICKY : 이 Flag를 리턴해 주시면, 강제로 종료 된 Service가 재시작 하지 않습니다. 시스템에 의해 강제 종료되어도 괸찮은 작업을 진행 할 때 사용해 주시면 됩니다.

START_REDELIVER_INTENT : START_STICKY와 마찬가지로 Service가 종료 되었을 경우 시스템이 다시 Service를 재시작 시켜 주지만 intent 값을 그대로 유지 시켜 줍니다. startService() 메서드 호출시 Intent value값을 사용한 경우라면 해당 Flag를 사용해서 리턴값을 설정해 주면 됩니다

 

Posted by yongary
,