Parcourir la source

[공통][Bug] Model lifecycle 을 fragment 와 연동되도록 수정

hyodong.min il y a 7 ans
Parent
commit
338beb812e

+ 8 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/model/Model.java

@@ -3,6 +3,7 @@
  */
 package kr.co.zumo.app.lifeplus.model;
 
+import android.arch.lifecycle.ViewModel;
 import android.util.Log;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -27,7 +28,7 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
  * @history 민효동   [2018. 9. 21.]   [최초 작성]
  * @since 2018. 9. 21.
  */
-public abstract class Model implements ILifeCycle {
+public abstract class Model extends ViewModel implements ILifeCycle {
 
   private IModelResult listener;
   private Disposable networkDisposable;
@@ -199,4 +200,10 @@ public abstract class Model implements ILifeCycle {
 
   protected abstract void pauseInternal();
 
+  @Override
+  protected void onCleared() {
+    super.onCleared();
+
+    destroy();
+  }
 }

+ 7 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/FragmentBase.java

@@ -3,6 +3,7 @@
  */
 package kr.co.zumo.app.lifeplus.view.fragment;
 
+import android.arch.lifecycle.ViewModelProviders;
 import android.content.Context;
 import android.os.Bundle;
 import android.support.annotation.CallSuper;
@@ -213,12 +214,12 @@ public abstract class FragmentBase<P extends Presenter> extends Fragment impleme
    * @return new MainModel()
    */
   protected <T extends Model> T getModel(Class<T> modelClass) {
-    try {
-      return modelClass.newInstance();
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-    return null;
+//    try {
+//      return modelClass.newInstance();
+//    } catch (Exception e) {
+//      e.printStackTrace();
+//    }
+    return ViewModelProviders.of(this).get(modelClass);
   }
 
   /**

+ 0 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -75,13 +75,6 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
   public final void destroy() {
     Log.i("APP# Presenter | destroy", "|" + "<<------------------------- " + this.getClass().getSimpleName());
 
-    /**
-     * 모델을 클리어해준다.
-     *
-     * todo 여러 모델들의 데이터를 취합 할 수 있는 방법 필요 (ex> DataHelper) SignUpModel 등
-     */
-    model.destroy();
-
     destroyInternal();
   }