11package com .blankj .base .mvp ;
22
3+ import android .app .Activity ;
34import android .arch .lifecycle .Lifecycle ;
4- import android .arch .lifecycle .LifecycleObserver ;
5- import android .arch .lifecycle .LifecycleOwner ;
6- import android .arch .lifecycle .OnLifecycleEvent ;
7- import android .support .annotation .CallSuper ;
5+ import android .support .annotation .NonNull ;
86
7+ import com .blankj .utilcode .util .ActivityUtils ;
98import com .blankj .utilcode .util .LogUtils ;
9+ import com .blankj .utilcode .util .Utils ;
1010
1111import java .util .HashMap ;
1212import java .util .Map ;
1919 * desc :
2020 * </pre>
2121 */
22- public abstract class BasePresenter <V extends BaseView > implements LifecycleObserver {
22+ public abstract class BasePresenter <V extends BaseView > extends Utils . ActivityLifecycleCallbacks {
2323
2424 private V mView ;
2525 private Map <Class , BaseModel > mModelMap = new HashMap <>();
@@ -29,6 +29,7 @@ public abstract class BasePresenter<V extends BaseView> implements LifecycleObse
2929 void bindView (V view ) {
3030 this .mView = view ;
3131 onAttachView ();
32+ ActivityUtils .addActivityLifecycleCallbacks (mView .getActivity (), this );
3233 }
3334
3435 public V getView () {
@@ -54,9 +55,16 @@ public <M extends BaseModel> M getModel(Class<M> modelClass) {
5455 return null ;
5556 }
5657
57- @ CallSuper
58- @ OnLifecycleEvent (Lifecycle .Event .ON_DESTROY )
59- public void onDestroyPresenter () {
58+ @ Override
59+ public void onLifecycleChanged (@ NonNull Activity activity , Lifecycle .Event event ) {
60+ super .onLifecycleChanged (activity , event );
61+ if (event == Lifecycle .Event .ON_DESTROY ) {
62+ destroyPresenter ();
63+ }
64+ LogUtils .i ("onLifecycleChanged: " + event );
65+ }
66+
67+ private void destroyPresenter () {
6068 if (mView != null ) {
6169 mView .mPresenterMap .remove (this .getClass ());
6270 mView .onDestroyView ();
@@ -67,11 +75,5 @@ public void onDestroyPresenter() {
6775 }
6876 }
6977 mModelMap .clear ();
70- LogUtils .i ("onDestroyPresenter" );
71- }
72-
73- @ OnLifecycleEvent (Lifecycle .Event .ON_ANY )
74- public void onLifecycleChanged (LifecycleOwner owner , Lifecycle .Event event ) {
75- LogUtils .i (event .toString ());
7678 }
7779}
0 commit comments