android: add setLifecycleOwner support
This commit is contained in:
parent
bcb0f2d9e4
commit
75151d57d4
@ -42,6 +42,8 @@ public class DoricPanel extends FrameLayout implements LifecycleObserver {
|
|||||||
private int renderedWidth = -1;
|
private int renderedWidth = -1;
|
||||||
private int renderedHeight = -1;
|
private int renderedHeight = -1;
|
||||||
|
|
||||||
|
private LifecycleOwner lifecycleOwner = null;
|
||||||
|
|
||||||
public DoricPanel(@NonNull Context context) {
|
public DoricPanel(@NonNull Context context) {
|
||||||
this(context, null);
|
this(context, null);
|
||||||
}
|
}
|
||||||
@ -53,15 +55,22 @@ public class DoricPanel extends FrameLayout implements LifecycleObserver {
|
|||||||
public DoricPanel(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
public DoricPanel(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
||||||
super(context, attrs, defStyleAttr);
|
super(context, attrs, defStyleAttr);
|
||||||
if (getContext() instanceof LifecycleOwner) {
|
if (getContext() instanceof LifecycleOwner) {
|
||||||
((LifecycleOwner) getContext()).getLifecycle().addObserver(this);
|
setLifecycleOwner((LifecycleOwner) getContext());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setLifecycleOwner(LifecycleOwner owner) {
|
||||||
|
if (this.lifecycleOwner != null) {
|
||||||
|
this.lifecycleOwner.getLifecycle().removeObserver(this);
|
||||||
|
}
|
||||||
|
this.lifecycleOwner = owner;
|
||||||
|
this.lifecycleOwner.getLifecycle().addObserver(this);
|
||||||
|
}
|
||||||
|
|
||||||
public void config(String script, String alias, String extra) {
|
public void config(String script, String alias, String extra) {
|
||||||
DoricContext doricContext = DoricContext.create(getContext(), script, alias, extra);
|
DoricContext doricContext = DoricContext.create(getContext(), script, alias, extra);
|
||||||
config(doricContext);
|
config(doricContext);
|
||||||
if (getContext() instanceof LifecycleOwner && ((LifecycleOwner) getContext()).getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
|
if (lifecycleOwner != null && lifecycleOwner.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
|
||||||
doricContext.onShow();
|
doricContext.onShow();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user