Browse Source

[공통][New] 이전 screenId 를 확인 할 수 있다. model.getPrevScreenId()

hyodong.min 6 năm trước cách đây
mục cha
commit
ec6f8fcdde

+ 5 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityBase.java

@@ -26,8 +26,10 @@ import kr.co.zumo.app.lifeplus.helper.FacebookHelper;
 import kr.co.zumo.app.lifeplus.helper.Helper;
 import kr.co.zumo.app.lifeplus.helper.IHelperProvider;
 import kr.co.zumo.app.lifeplus.helper.ScreenChangerHelper;
+import kr.co.zumo.app.lifeplus.helper.ScreenIDDeliveryHelper;
 import kr.co.zumo.app.lifeplus.helper.ScreenSizeHelper;
 import kr.co.zumo.app.lifeplus.supervisor.ActivityDeliveryResultHelper;
+import kr.co.zumo.app.lifeplus.supervisor.ActivityScreenIDDeliveryHelper;
 import kr.co.zumo.app.lifeplus.supervisor.FragmentSkipBackChanger;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChanger;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
@@ -126,6 +128,8 @@ public abstract class ActivityBase extends AppCompatActivity implements IHelperP
       helper.setFragmentActivity(this);
       helper.setContainerId(R.id.container_main);
 
+      // screen id relay
+      ActivityScreenIDDeliveryHelper.getInstance().shipTo(getHelper(ScreenIDDeliveryHelper.class));
     }
 
     /*
@@ -200,6 +204,7 @@ public abstract class ActivityBase extends AppCompatActivity implements IHelperP
 
     // 결과를 이전(하위) 액티비티로 전달
     getHelper(DeliveryResultHelper.class).shipTo(ActivityDeliveryResultHelper.getInstance());
+    getHelper(ScreenIDDeliveryHelper.class).shipTo(ActivityScreenIDDeliveryHelper.getInstance());
 
     Log.w("APP# ActivityBase | onPause", "| <<<<<<-- " + this.getClass().getSimpleName() + " HC: " + this.hashCode());
     super.onPause();

+ 18 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/helper/ScreenIDDeliveryHelper.java

@@ -0,0 +1,18 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.helper;
+
+/**
+ * ScreenIDDeliveryHelper
+ * - 현재 스크린의 ID를 다음 스크린에게 전달한다. presenter 를 통해 model 에 저장된다.
+ *
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2019. 1. 16.]   [최초 작성]
+ * @since 2019. 1. 16.
+ */
+public class ScreenIDDeliveryHelper extends DeliveryHelper {}

+ 30 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/model/Model.java

@@ -18,6 +18,7 @@ import kr.co.zumo.app.lifeplus.helper.DeliveryHelper;
 import kr.co.zumo.app.lifeplus.helper.DeliveryResultHelper;
 import kr.co.zumo.app.lifeplus.helper.Helper;
 import kr.co.zumo.app.lifeplus.helper.IHelperProvider;
+import kr.co.zumo.app.lifeplus.helper.ScreenIDDeliveryHelper;
 import kr.co.zumo.app.lifeplus.model.module.APIError;
 import kr.co.zumo.app.lifeplus.model.module.APIModuleListener;
 import kr.co.zumo.app.lifeplus.model.module.PinModuleParser;
@@ -50,9 +51,10 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
   protected IWaiterCallable waiterCaller;
   private Disposable disposableBucket;
   private int screenId;
+  private int prevScreenId;
 
   public Model() {
-    Log.w("APP# Model | Model", "| model: >>>>>>>>>>>> " + this.getClass().getSimpleName());
+    Log.w("APP# Model | constructor", "| >>>>>>>>>>>> " + this.getClass().getSimpleName());
   }
 
   /***********************************
@@ -314,9 +316,8 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
       });
   }
 
-
   /**
-   * Screen ID 저장
+   * Screen ID 저장
    *
    * @param screenId
    */
@@ -328,6 +329,28 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
     return screenId;
   }
 
+  /**
+   * 현 screen id 를 다음 스크린으로 전달하기위해 담기
+   */
+  public void packScreenId() {
+    getHelper(ScreenIDDeliveryHelper.class).setPackaging(screenId);
+    Log.e("APP#  Model | packScreenId", "|" + " deliver screen id ----> " + screenId);
+  }
+
+  /**
+   * 이전 Screen ID
+   *
+   * @param screenId
+   */
+  public void setPrevScreenId(int screenId) {
+    Log.e("APP#  Model | setPrevScreenId", "|" + " received screen id <----- " + screenId);
+    this.prevScreenId = screenId;
+  }
+
+  public int getPrevScreenId() {
+    return prevScreenId;
+  }
+
   /***********************************
    * ILifeCycle
    ***********************************/
@@ -353,13 +376,13 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
 
   @Override
   public final void pause() {
-    Log.w("APP#  Model | pause", "| " + this.getClass().getSimpleName() + " <<--------");
+    Log.i("APP#  Model | pause", "| " + this.getClass().getSimpleName() + " <<--------");
     pauseInternal();
   }
 
   @Override
   public final void stop() {
-    Log.w("APP# Model | stop", "| " + this.getClass().getSimpleName() + " <<--------");
+    Log.i("APP# Model | stop", "| " + this.getClass().getSimpleName() + " <<--------");
     stopNetworkWatching();
 
     if (null != disposableBucket) {
@@ -372,7 +395,7 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
 
   @Override
   public void destroyView() {
-    Log.w("APP# Model | destroyView", "| " + this.getClass().getSimpleName() + " <<--------");
+    Log.i("APP# Model | destroyView", "| " + this.getClass().getSimpleName() + " <<--------");
     destroyViewInternal();
   }
 
@@ -382,7 +405,7 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
    */
   @Override
   public final void destroy() {
-    Log.w("APP# Model | destroy", "| model: " + this.getClass().getSimpleName() + "<<<<<<<<<<<<");
+    Log.i("APP# Model | destroy", "| model: " + this.getClass().getSimpleName() + "<<<<<<<<<<<<");
     destroyInternal();
   }
 

+ 26 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/ActivityScreenIDDeliveryHelper.java

@@ -0,0 +1,26 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.supervisor;
+
+import kr.co.zumo.app.lifeplus.helper.DeliveryHelper;
+
+/**
+ * ActivityScreenIDDeliveryHelper
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018-11-22]   [최초 작성]
+ * @since 2018-11-22
+ */
+public class ActivityScreenIDDeliveryHelper extends DeliveryHelper {
+  private static ActivityScreenIDDeliveryHelper ourInstance = new ActivityScreenIDDeliveryHelper();
+
+  public static ActivityScreenIDDeliveryHelper getInstance() {
+    return ourInstance;
+  }
+
+  private ActivityScreenIDDeliveryHelper() { }
+}

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

@@ -24,6 +24,7 @@ import kr.co.zumo.app.lifeplus.bean.api.LinkBean;
 import kr.co.zumo.app.lifeplus.helper.Helper;
 import kr.co.zumo.app.lifeplus.helper.IHelperProvider;
 import kr.co.zumo.app.lifeplus.helper.NavigationBar;
+import kr.co.zumo.app.lifeplus.helper.ScreenIDDeliveryHelper;
 import kr.co.zumo.app.lifeplus.model.IModelResult;
 import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.model.module.APIModuleHelper;
@@ -86,6 +87,11 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
     this.model.setNetworkListener(this);
     this.model.setHelperProvider(this);
     this.model.setWaiterCaller(this);
+    Integer prevScreenId = getHelper(ScreenIDDeliveryHelper.class).getPackaging(Integer.class);
+    Log.i("APP# Presenter | Presenter", "|" + "prevScreenId: " + prevScreenId);
+    if (null != prevScreenId) {
+      this.model.setPrevScreenId(prevScreenId);
+    }
 
     APIModuleHelper.setEmergencyHandler(this);
   }
@@ -547,6 +553,9 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
    ***********************************/
 
   protected void go(@ScreenID.ID @IntRange(from = 0, to = 1000) int id, @ScreenID.Direction int direction, @Screen.Method int method) {
+    if (direction == ScreenID.DIRECTION_NEXT) {
+      model.packScreenId();
+    }
     onCommand(new ScreenCommand(id, direction, method));
   }