반응형
개발을 하시다 보면 Service를 사용하게 됩니다.
Service가 잘 사용하면 좋지만 잘못 사용하면 원치 않을 때 살아서 좀비같이 동작할 때가 있습니다.
이럴 때 Service의 종료 시점을 정확히 알기는 어렵지만 Task의 종료 시점에 맞춰서 Service를 종료할 수 있습니다.
- 생성
public class MyService extends Service {
public void onCreate() {
super.onCreate();
...
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return mMessenger.getBinder();
}
@Override
public void onTaskRemoved(Intent rootIntent) {
//super.onTaskRemove()
//Task 종료시 불림
stopSelf(); //서비스도 같이 종료함
}
}
- 매니페스트 설정
<service
android:name=".service.MyService"
android:enabled="true"
android:stopWithTask="false" />
- 설명
- super.onTaskRemove()가 호출되면 Task가 종료될 때 다시 Service가 시작된다. 서비스도 같이 종료해야 하기 때문에 stopSelf()를 사용하여 자체 종료시킨다.
- android:stopWithTask
- android:stopWithTask="true"
- 모든 Task와 Activity가 종료될 때 서비스도 같이 종료된다.
- android:stopWithTask="false"
- 모든 Task와 Activity가 종료될 때 서비스는 onTaskRemoved를 호출하고 서비스는 다시 살아난다.
- android:stopWithTask="true"
728x90
반응형
'개발 > Android' 카테고리의 다른 글
[Android] 소스 내에서 deprecated된 메소드 찾기 (0) | 2022.05.18 |
---|---|
[Android] recyclerView 업데이트 (0) | 2022.05.17 |
[Android] 안드로이드 스튜디오 cannot resolve symbol 'R' (0) | 2022.05.16 |
[Android] MultiDex 로 64K 메서드 제한 해결하기 (0) | 2022.05.16 |
[Android] StatusBar의 아이콘 색상 변경 (0) | 2022.05.16 |
댓글