Browse Source

[공통][Bug] 모델 생성을 직접 해준다. Activity 를 통한 ViewModel 생성이 아님.

hyodong.min 7 years ago
parent
commit
b5183715f3

+ 2 - 16
app/src/main/java/kr/co/zumo/app/lifeplus/model/Model.java

@@ -3,7 +3,6 @@
  */
 package kr.co.zumo.app.lifeplus.model;
 
-import android.arch.lifecycle.ViewModel;
 import android.util.Log;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -19,10 +18,7 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
  * Model
- * - Activity 에는 하나의 Model 을 이용한다.
- * - Activity 와 Fragment 에서 모델로 접근을 쉽게 하기 위해서 Android 의 ViewModel 을 이용한다.
- * - dispose() 는 onCleared() 에서 처리하므로 별도로 수행하지 않는다.
- * - 생성은 new Model() 대신 {@code ViewModelProviders.of(this).get(Model.class)} 를 이용한다.
+ * - Fragment 에는 하나의 Model 을 이용한다.
  * <pre>
  * </pre>
  *
@@ -31,7 +27,7 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
  * @history 민효동   [2018. 9. 21.]   [최초 작성]
  * @since 2018. 9. 21.
  */
-public abstract class Model extends ViewModel implements ILifeCycle {
+public abstract class Model implements ILifeCycle {
 
   private IModelResult listener;
   private Disposable networkDisposable;
@@ -203,14 +199,4 @@ public abstract class Model extends ViewModel implements ILifeCycle {
 
   protected abstract void pauseInternal();
 
-
-  /***********************************
-   * ViewModel
-   ***********************************/
-  @Override
-  protected void onCleared() {
-    super.onCleared();
-
-    destroy();
-  }
 }

+ 12 - 16
app/src/main/java/kr/co/zumo/app/lifeplus/model/ModelProvider.java

@@ -3,10 +3,6 @@
  */
 package kr.co.zumo.app.lifeplus.model;
 
-import android.arch.lifecycle.ViewModelProviders;
-import android.support.v4.app.FragmentActivity;
-import android.util.Log;
-
 /**
  * ModelProvider
  * <pre>
@@ -38,12 +34,12 @@ public class ModelProvider {
    * @param modelClass MainModel.class
    * @return new MainModel()
    */
-  public <T extends Model> T getModel(FragmentActivity activity, Class<T> modelClass) {
-    String key = modelClass.getCanonicalName();
-    Log.e("APP#  ModelProvider | getModel", "|" + key);
-
-    return ViewModelProviders.of(activity).get(key, modelClass);
-  }
+//  public <T extends Model> T getModel(FragmentActivity activity, Class<T> modelClass) {
+//    String key = modelClass.getCanonicalName();
+//    Log.e("APP#  ModelProvider | getModel", "|" + key);
+//
+//    return ViewModelProviders.of(activity).get(key, modelClass);
+//  }
 
   /**
    * 모델을 clear 한다.
@@ -53,11 +49,11 @@ public class ModelProvider {
    * @param activity   FragmentActivity
    * @param modelClass MainModel.class
    */
-  public void clearModel(FragmentActivity activity, Class modelClass) {
-    String key = modelClass.getCanonicalName();
-    Log.e("APP#  ModelProvider | clearModel", "|" + key);
-
-    ViewModelProviders.of(activity).get(key, BlankModel.class);
-  }
+//  public void clearModel(FragmentActivity activity, Class modelClass) {
+//    String key = modelClass.getCanonicalName();
+//    Log.e("APP#  ModelProvider | clearModel", "|" + key);
+//
+//    ViewModelProviders.of(activity).get(key, BlankModel.class);
+//  }
 
 }

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

@@ -17,7 +17,6 @@ import android.view.ViewGroup;
 import io.reactivex.disposables.CompositeDisposable;
 import kr.co.zumo.app.lifeplus.manager.ActionButtonManager;
 import kr.co.zumo.app.lifeplus.model.Model;
-import kr.co.zumo.app.lifeplus.model.ModelProvider;
 import kr.co.zumo.app.lifeplus.view.IView;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
@@ -208,15 +207,18 @@ public abstract class FragmentBase<P extends Presenter> extends Fragment impleme
   protected void onAfterDestroy() {}
 
   /**
-   * Android life-cycle 에 귀속되는 모델을 반환한다.
-   * - 사실 MVVM 사용되는 ViewModel 이지만 MVP 의 Model 로 사용한다.
-   * - Activity 의 종속성을 이용하여 Model 을 참조하기 위함
+   * 모델을 반환한다.
    *
    * @param modelClass MainModel.class
    * @return new MainModel()
    */
   protected <T extends Model> T getModel(Class<T> modelClass) {
-    return ModelProvider.getInstance().getModel(getActivity(), modelClass);
+    try {
+      return modelClass.newInstance();
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+    return null;
   }
 
   /**

+ 1 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -3,7 +3,6 @@
  */
 package kr.co.zumo.app.lifeplus.view.presenter;
 
-import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.ActionBar;
 import android.util.Log;
 
@@ -12,7 +11,6 @@ import com.google.gson.Gson;
 import kr.co.zumo.app.lifeplus.ILifeCycle;
 import kr.co.zumo.app.lifeplus.model.IModelResult;
 import kr.co.zumo.app.lifeplus.model.Model;
-import kr.co.zumo.app.lifeplus.model.ModelProvider;
 import kr.co.zumo.app.lifeplus.network.INetworkReceiverListener;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.view.Event;
@@ -82,7 +80,7 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
      *
      * todo 여러 모델들의 데이터를 취합 할 수 있는 방법 필요 (ex> DataHelper) SignUpModel 등
      */
-    ModelProvider.getInstance().clearModel((FragmentActivity) view.getActivity(), model.getClass());
+    model.destroy();
 
     destroyInternal();
   }