먼저 알아두셔할 것은 앱이 백그라운드로 가게 되면 시스템이 앱을 언제든지 죽일 수가 있습니다, 그렇기 때문에 액티비티의 onDestory는 100% 호출된다는 보장이 없습니다.
두가지 정도의 옵션이 생각나는데,
첫번째는 액티비티의 onStop에서 필요한 데이터를 보내는 것입니다. (onStop은 무조건 호출되게 되므로). BaseActivity를 상속받거나 하면 될 것 같고,
다른 하나는 ProcessLifecycle을 이용하는 겁니다.
개발자문서: https://developer.android.com/reference/androidx/lifecycle/ProcessLifecycleOwner
블로그: https://proandroiddev.com/android-processlifecycleowner-by-example-2f965061b9da
사용법은, 먼저 build.gradle 에 dependency를 추가합니다.
implementation "androidx.lifecycle:lifecycle-runtime:2.4.0"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.4.0"
Application. 클래스의 onCreate 에 아래와 같이 초기화를 해줍니다.
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ProcessLifecycleOwner.get().getLifecycle().addObserver(new DefaultLifecycleObserver() {
@Override
public void onDestroy(@NonNull LifecycleOwner owner) {
//여기에서 필요한 처리.
}
});
}
}
두번째 방법은 테스트를 해보지는 않아서 원하는 대로 잘 될지는 결과가 어떨지는 모르겠지만, 해볼만한 방법이라고 생각합니다. 아시겠지만, 이 방법을 사용하려면 MyApp을 AndrodiManifest.xml에 등록을 해주셔야 합니다.