Explorar o código

[공통][New] Helper 추가
- Activity 에서 유일하게 사용할 수 있는 객체
- 스크린 간 데이터 배달 등 관리

hyodong.min %!s(int64=7) %!d(string=hai) anos
pai
achega
4d5e20404e

+ 59 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/helper/DeliveryHelper.java

@@ -0,0 +1,59 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.helper;
+
+import android.util.Log;
+
+/**
+ * DeliveryHelper
+ * - 스크린 간 데이터 공유를 위해서 Activity 에 저장되어 있는 helper
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 11. 6.]   [최초 작성]
+ * @since 2018. 11. 6.
+ */
+public class DeliveryHelper extends Helper {
+
+  private Object packaging;
+
+  /**
+   * 저장된 Object 를 반환한다.
+   * - 지정된 class 로 반환이 불가능하다면 null 이 전달된다.
+   *
+   * @param nameClass Bean.class
+   * @return exist bean object or null
+   */
+  public <T> T getPackaging(Class<T> nameClass) {
+    if (null != packaging && packaging.getClass().isAssignableFrom(nameClass)) {
+      return (T) packaging;
+    }
+
+    return null;
+  }
+
+  /**
+   * 배달할 객체를 저장한다.
+   *
+   * @param packaging
+   */
+  public void setPackaging(Object packaging) {
+    Log.i("APP# DeliveryHelper | setPackaging", "|" + " packaging: " + packaging);
+    this.packaging = packaging;
+  }
+
+  /**
+   * 객체 지움
+   */
+  public void clearPackaging() {
+    packaging = null;
+  }
+
+  @Override
+  protected void onCleared() {
+    clearPackaging();
+  }
+}

+ 21 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/helper/Helper.java

@@ -0,0 +1,21 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.helper;
+
+import android.arch.lifecycle.ViewModel;
+
+/**
+ * Helper
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 11. 6.]   [최초 작성]
+ * @since 2018. 11. 6.
+ */
+public abstract class Helper extends ViewModel {
+  @Override
+  protected abstract void onCleared();
+}

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

@@ -10,6 +10,7 @@ import android.util.Log;
 import com.google.gson.Gson;
 
 import kr.co.zumo.app.lifeplus.ILifeCycle;
+import kr.co.zumo.app.lifeplus.helper.Helper;
 import kr.co.zumo.app.lifeplus.model.IModelResult;
 import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.network.INetworkReceiverListener;
@@ -205,6 +206,17 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
     onCommand(new HomeCommand(ScreenID.MAIN, ScreenID.DIRECTION_BACK));
   }
 
+   /**
+   * 각종 Helper 객체를 반환한다.
+   * - Activity 에 종속되는 객체로 그 안에서 싱글톤처럼 사용.
+   *
+   * @param helperClass DeliveryHelper.class
+   * @return new DeliveryHelper() or exist object
+   */
+   protected <H extends Helper> H getHelper(Class<H> helperClass) {
+     return view.getHelper(helperClass);
+   }
+
   /***********************************
    * listener
    ***********************************/

+ 15 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/FragmentBase.java

@@ -19,6 +19,7 @@ import android.view.animation.Animation;
 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.helper.Helper;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.view.IView;
@@ -238,15 +239,16 @@ public abstract class FragmentBase<P extends Presenter> extends Fragment impleme
    * @param id
    */
   public final void setScreenId(@ScreenID.FragmentID int id) {
-    if(isSkipScreenWhenBack()) {
+    if (isSkipScreenWhenBack()) {
       ScreenChangerHelper.getInstance().addSkipBackId(id);
     }
   }
+
   /**
    * 모델을 반환한다.
    *
    * @param modelClass MainModel.class
-   * @return new MainModel()
+   * @return new MainModel() or exist object
    */
   protected <T extends Model> T getModel(Class<T> modelClass) {
     return ViewModelProviders.of(this).get(modelClass);
@@ -262,6 +264,17 @@ public abstract class FragmentBase<P extends Presenter> extends Fragment impleme
     return false;
   }
 
+  /**
+   * 각종 Helper 객체를 반환한다.
+   * - Activity 에 종속되는 객체로 그 안에서 싱글톤처럼 사용.
+   *
+   * @param helperClass DeliveryHelper.class
+   * @return new DeliveryHelper() or exist object
+   */
+  public <H extends Helper> H getHelper(Class<H> helperClass) {
+    return ViewModelProviders.of(getActivity()).get(helperClass);
+  }
+
 
   // fixme for test
   @Override