Service

    Service

     

    Service에서 Activity 호출 시 FLAG_ACTIVITY_NEW_TASK 오류 발생

    Service는 어떠한 Task에도 속하지 않음. Activity만 Task로 관리됨

    따라서 어떤 Task 위에 해당 Activity를 추가할 지 알 수 없어서 발생됨

    해결 방법

    FLAG_ACTIVITY_NEW_TASK를 사용.

    이미 Task가 있다면 해당 Task에 없다면 새로운 Task에 Activity 위치

    PendingIntent 사용

    Service를 시작시키는 Activity가 Target Activity를 실행하기 위한 PendingIntent를 Service에 넘겨줌

    Service는 PendingIntent를 Send

    NotificationManager에서 주로 사용하는 방식

    Service에서 직접 PendingIntent 사용

    PendingIntent 경우에는 ActivityManager가 강제로 FLAG_ACTIVITY_NEW_TASK를 추가해줌

     

    OnStartCommand()

    리턴되는 값에 따라 프로세스가 강제 종료된(stopSelf()가 호출 되기 전) 후 Service 재시작 시 안드로이드 플랫폼의 수행방식이 달라진다.

    START_STICKY

    Null Intent가 포함된 onStartCommand() 함수가 호출됨

    START_NOT_STICKY

    Service가 다시 시작되지 않고 종료된 상태로 남게됨

    START_REDELIVER_INTENT

    Intent가 다시 전달되어 Service가 재시작함

     

    'Android > Theory' 카테고리의 다른 글

    Window  (0) 2013.04.16
    Toast  (0) 2013.04.16
    Context  (0) 2013.04.16
    Intent  (0) 2013.04.16
    Orientation  (0) 2013.04.16

    댓글