|
package eu.faircode.email;
|
|
|
|
import android.content.Context;
|
|
|
|
import androidx.appcompat.app.AlertDialog;
|
|
import androidx.lifecycle.Lifecycle;
|
|
import androidx.lifecycle.LifecycleObserver;
|
|
import androidx.lifecycle.LifecycleOwner;
|
|
import androidx.lifecycle.OnLifecycleEvent;
|
|
|
|
public class DialogBuilderLifecycle extends AlertDialog.Builder implements LifecycleObserver {
|
|
private LifecycleOwner owner;
|
|
private AlertDialog dialog;
|
|
|
|
public DialogBuilderLifecycle(Context context, LifecycleOwner owner) {
|
|
super(context);
|
|
this.owner = owner;
|
|
}
|
|
|
|
public DialogBuilderLifecycle(Context context, int themeResId, LifecycleOwner owner) {
|
|
super(context, themeResId);
|
|
this.owner = owner;
|
|
}
|
|
|
|
@Override
|
|
public AlertDialog create() {
|
|
dialog = super.create();
|
|
owner.getLifecycle().addObserver(this);
|
|
return dialog;
|
|
}
|
|
|
|
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
|
|
public void onDestroy() {
|
|
dialog.dismiss();
|
|
owner = null;
|
|
dialog = null;
|
|
}
|
|
}
|