Browse Source

[주모] 업데이트 이후 유저넘버 연동

yeongyun 6 years ago
parent
commit
99e1b32c62

+ 10 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/LifeplusPreferences.java

@@ -3,6 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.model;
 
+import kr.co.zumo.app.lifeplus.util.StringUtil;
+
 /**
  * 디바이스에 저장이 필요한 값들을 관리.
  * <pre>
@@ -20,6 +22,7 @@ public class LifeplusPreferences {
 
   final static String ENCRYPTION_USER_NO = "encryption_user_no";    // 앱 업데이트/신규 체크에 사용.
   private final static String ZUMO_USER_UPDATE_COMPLETED = "zumo_user_update_completed";
+  private final static String ZUMO_USER_NO_UPDATE = "zumo_user_no_update";
   private final static String USER_NO = "user_no"; //"user_id"; // zumo 1.0 에서 사용하는 키를 그대로 이용한다.
   private final static String ON_BOARDING_DONE = "on_boarding_done";
   private final static String PERMISSION_INFO_DONE = "permission_info_done";
@@ -85,6 +88,13 @@ public class LifeplusPreferences {
     return preferences.get(ZUMO_USER_UPDATE_COMPLETED, false);
   }
 
+  public void getZumoUserNoOnce() {
+    if(StringUtil.isFull(getZumoUserNo()) && preferences.get(ZUMO_USER_NO_UPDATE, false) == false) {
+      setUserNo(getZumoUserNo());
+    }
+    preferences.put(ZUMO_USER_NO_UPDATE, true);
+  }
+
   /**
    * 튜토리얼을 확인했음으로 표시
    *

+ 436 - 442
app/src/main/java/kr/co/zumo/app/lifeplus/model/Model.java

@@ -52,454 +52,448 @@ import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.BucketListManager;
  */
 public abstract class Model extends ViewModel implements ILifeCycle, IHelperProvider {
 
-  private IModelResult listener;
-  private IHelperProvider helperProvider;
-  private Disposable networkDisposable;
-  private Disposable retryDisposable;
-  private INetworkReceiverListener networkListener;
-  protected IWaiterCallable waiterCaller;
-  private Disposable disposableBucket;
-  private Disposable disposableBookMarkList;
-  private Disposable disposableNoti;
-  private int screenId;
-  private int prevScreenId;
-
-  public Model() {
-    Log.w("APP# Model | constructor", "| >>>>>>>>>>>> " + this.getClass().getSimpleName());
-  }
-
-  /***********************************
-   * own
-   ***********************************/
-
-  /**
-   * 네트워크의 연결 상태를 감시한다.
-   * 변동이 있을 때 presenter 로 알려준다.
-   */
-  protected void watchNetwork() {
-    Log.w("APP# Model | watchNetwork", "| " + this.getClass().getSimpleName() + " - Start network watching............");
-    networkDisposable =
-      new NetworkWatcher().watch(App.getInstance().getContext())
-        .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-        .subscribe(isConnectedAll -> {
-          Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: +++++++++" + isConnectedAll);
-          if (null != networkListener) {
-            networkListener.onChangedConnection(isConnectedAll, 0);
-          }
-        }, e -> {
-          Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: ++++++++++" + "error ");
-          if (null != networkListener) {
-            networkListener.onChangedConnection(false, 0);
-          }
-        });
-  }
-
-  protected void stopNetworkWatching() {
-    Log.w("APP# Model | stopNetworkWatching", "| " + this.getClass().getSimpleName() + " - Stop network watching___________");
-    if (null != networkDisposable) {
-      networkDisposable.dispose();
-      networkDisposable = null;
-    }
-
-    if (null != retryDisposable) {
-      retryDisposable.dispose();
-      retryDisposable = null;
-    }
-  }
-
-  protected void onResult(Event event) {
-    try {
-      listener.onResult(event);
-    } catch (Exception e) {
-      //e.printStackTrace();
-      Log.e("APP#  Model | onResult", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
-      FinalAlert.create(new Event.Builder(Event.ERROR).string(e.getLocalizedMessage()).build());
-    }
-  }
-
-  /**
-   * 네트워크 연결 확인.
-   */
-  public void checkNetwork() {
-    retryDisposable = new NetworkWatcher().check(App.getInstance().getContext())
-      .delay(300, TimeUnit.MILLISECONDS)  // ui 를 표시하기위한 딜레이 추가
-      .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-      .subscribe(isConnected -> {
-        Log.i("APP# Model | checkNetwork", "| isConnected: " + isConnected);
-        if (null != networkListener) {
-          networkListener.onChangedConnection(isConnected, 0);
+    private IModelResult listener;
+    private IHelperProvider helperProvider;
+    private Disposable networkDisposable;
+    private Disposable retryDisposable;
+    private INetworkReceiverListener networkListener;
+    protected IWaiterCallable waiterCaller;
+    private Disposable disposableBucket;
+    private Disposable disposableBookMarkList;
+    private Disposable disposableNoti;
+    private int screenId;
+    private int prevScreenId;
+
+    public Model() {
+        Log.w("APP# Model | constructor", "| >>>>>>>>>>>> " + this.getClass().getSimpleName());
+    }
+
+    /***********************************
+     * own
+     ***********************************/
+
+    /**
+     * 네트워크의 연결 상태를 감시한다.
+     * 변동이 있을 때 presenter 로 알려준다.
+     */
+    protected void watchNetwork() {
+        Log.w("APP# Model | watchNetwork", "| " + this.getClass().getSimpleName() + " - Start network watching............");
+        networkDisposable =
+                new NetworkWatcher().watch(App.getInstance().getContext())
+                        .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+                        .subscribe(isConnectedAll -> {
+                            Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: +++++++++" + isConnectedAll);
+                            if (null != networkListener) {
+                                networkListener.onChangedConnection(isConnectedAll, 0);
+                            }
+                        }, e -> {
+                            Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: ++++++++++" + "error ");
+                            if (null != networkListener) {
+                                networkListener.onChangedConnection(false, 0);
+                            }
+                        });
+    }
+
+    protected void stopNetworkWatching() {
+        Log.w("APP# Model | stopNetworkWatching", "| " + this.getClass().getSimpleName() + " - Stop network watching___________");
+        if (null != networkDisposable) {
+            networkDisposable.dispose();
+            networkDisposable = null;
         }
-      }, Throwable::printStackTrace);
-  }
-
-  /**
-   * Model 로 부터 결과 값을 전달 받을 수 있는 interface 객체
-   *
-   * @return IModelResult
-   */
-  public IModelResult getListener() {
-    return listener;
-  }
-
-  /**
-   * Model 로 부터 결과 값을 전달 받을 객체 지정
-   *
-   * @param listener IModelResult
-   */
-  public void setListener(IModelResult listener) {
-    this.listener = listener;
-  }
-
-  /**
-   * Preferences 반환
-   *
-   * @return LifeplusPreferences
-   */
-  public LifeplusPreferences getPreferences() {
-    return SuperModel.getInstance().getPreferences();
-  }
-
-  /**
-   * is update from zumo?
-   *
-   * @return
-   */
-  public boolean isUpdateUser() {
-    LifeplusPreferences preferences = getPreferences();
-
-    //TODO: 기존 주모 업데이트 유저는 해당 유저넘버 유지하여 자동 로그인
-//    SuperModel.getInstance().setUserNo(preferences.getZumoUserNo());
-
-    return StringUtil.isFull(preferences.getZumoUserNo()) && preferences.isZumoUserUpdateCompleted() == false;
-  }
-
-  /**
-   * 멤버/게스트 확인
-   * - 블럭/휴면 계정도 비회원으로 처리됨.
-   *
-   * @return
-   */
-  public boolean isActiveMember() {
-    return SuperModel.getInstance().isActiveMember();
-  }
-
-  /**
-   * 회원 가입했는지 확인
-   *
-   * @return
-   */
-  public boolean isJoined() {
-    return SuperModel.getInstance().isJoined();
-  }
-
-  /**
-   * User ID (userNo)
-   *
-   * @return
-   */
-  public final String getUserNo() {
-    return SuperModel.getInstance().getUserNo();
-  }
-
-  /**
-   * User Name
-   *
-   * @return
-   */
-  public final String getUserName() {
-    return SuperModel.getInstance().getUserName();
-  }
-
-  /**
-   * User Email
-   *
-   * @return
-   */
-  public String getUserEmail() {
-    return SuperModel.getInstance().getUserEmail();
-  }
-
-  /**
-   * 네트워크 상태를 체크할 리스너 등록
-   *
-   * @param networkListener
-   */
-  public void setNetworkListener(INetworkReceiverListener networkListener) {
-    this.networkListener = networkListener;
-  }
-
-  /**
-   * Helper 제공자를 설정한다.
-   *
-   * @param helperProvider
-   */
-  public void setHelperProvider(IHelperProvider helperProvider) {
-    this.helperProvider = helperProvider;
-  }
-
-  /**
-   * Waiter(Loading) 을 호출해줄 객체 지정
-   *
-   * @param waiterCaller
-   */
-  public void setWaiterCaller(IWaiterCallable waiterCaller) {
-    this.waiterCaller = waiterCaller;
-  }
-
-  @Override
-  public <H extends Helper> H getHelper(Class<H> helperClass) {
-    return helperProvider.getHelper(helperClass);
-  }
-
-  /**
-   * 다음 화면(Fragment)으로 전달 할 데이터를 등록한다.
-   *
-   * @param packaging
-   */
-  public void setDeliveryPackaging(Object packaging) {
-    getHelper(DeliveryHelper.class).setPackaging(packaging);
-  }
-
-  /**
-   * 다음 화면(Fragment)으로 전달 할 데이터를 반환 @Nullable
-   *
-   * @param nameClass
-   * @return
-   */
-  @Nullable
-  public <T> T getDeliveryPackaging(Class<T> nameClass) {
-    return getHelper(DeliveryHelper.class).getPackaging(nameClass);
-  }
-
-  /**
-   * DeliveryHelper clearPackagingInternal()
-   */
-  public void clearDeliveryPackaging() {
-    getHelper(DeliveryHelper.class).clearPackaging();
-  }
-
-  /**
-   * 이전 화면(상위)에서 되돌아온 결과 데이터 등록
-   *
-   * @param packaging
-   */
-  public void setResultPackaging(Object packaging) {
-    Log.e("APP#  Model | setResultPackaging", "|" + " =============> " + packaging);
-    getHelper(DeliveryResultHelper.class).setPackaging(packaging);
-  }
-
-  /**
-   * 이전 화면(상위)에서 되돌아온 결과 데이터 반환
-   *
-   * @param nameClass
-   * @param <T>
-   * @return
-   */
-  @Nullable
-  public <T> T getResultPackaging(Class<T> nameClass) {
-    return getHelper(DeliveryResultHelper.class).getPackaging(nameClass);
-  }
-
-  /**
-   * 이전 화면(상위)에서 되돌아온 결과 데이터 clear
-   */
-  public void clearResultPackaging() {
-    getHelper(DeliveryResultHelper.class).clearPackaging();
-  }
-
-  /**
-   * 버킷 리스트 수를 파악한다.
-   *
-   * @param listener
-   */
-  public void loadMyBucketCount(IEventListener listener) {
-    disposableBucket = BucketListManager.getInstance().loadMyBucketList(
-      new BucketListRequestBean(1, 1000, ""),
-      new APIModuleListener<BucketListResultBean>(waiterCaller) {
-        @Override
-        public void onApiSuccess(BucketListResultBean resultBean) {
-          listener.onEvent(new Event.Builder(Event.RESULT).integer(BucketListManager.getInstance().getBucketCount()).build());
+
+        if (null != retryDisposable) {
+            retryDisposable.dispose();
+            retryDisposable = null;
         }
+    }
 
-        @Override
-        public void onApiError(String errorMessage, APIError error) {
-          listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
+    protected void onResult(Event event) {
+        try {
+            listener.onResult(event);
+        } catch (Exception e) {
+            //e.printStackTrace();
+            Log.e("APP#  Model | onResult", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
+            FinalAlert.create(new Event.Builder(Event.ERROR).string(e.getLocalizedMessage()).build());
         }
-      });
-  }
-
-  /**
-   * 북마크 수를 파악
-   *
-   * @param listener
-   */
-  public void loadMyBookMarkCount(IEventListener listener) {
-    disposableBookMarkList = BookmarkManager.getInstance().loadMyBookmark(new PageRequestBean(), new APIModuleListener<BookmarkListResultBean>(waiterCaller) {
-      @Override
-      public void onApiSuccess(BookmarkListResultBean resultBean) {
-        listener.onEvent(new Event.Builder(Event.RESULT).integer(BookmarkManager.getInstance().getCountOfBookmark()).build());
-      }
-
-      @Override
-      public void onApiError(String errorMessage, APIError error) {
-        listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
-      }
-    });
-  }
-
-  /**
-   * 최신 알림이 있는지 파악
-   *
-   * @param listener
-   */
-  public void loadNotiLatest(IEventListener listener) {
-    disposableNoti =
-      new APINoticeModule().call(new RequestBean(), new APIModuleListener<NoticeResultBean>(waiterCaller) {
-          @Override
-          public void onApiSuccess(NoticeResultBean resultBean) {
-            List<NoticeBean> noticeBeans = resultBean.getData();
-
-            if (null != noticeBeans && noticeBeans.size() > 0) {
-              // 마지막 시간과 비교해서 다르면 뉴 표시
-
-              Log.d("APP# Model | onApiSuccess, 369", "|" + noticeBeans.get(0).getOpeningDate());
-              if (SuperModel.getInstance().getPreferences().getNotiLatestTime().equals(noticeBeans.get(0).getOpeningDate())) {
-                // 새 알림 없음.
-                listener.onEvent(new Event.Builder(Event.SUCCESS).bool(false).build());
-              }
-              else {
-                // 새 알림 있음.
-                listener.onEvent(new Event.Builder(Event.SUCCESS).bool(true).build());
-              }
+    }
+
+    /**
+     * 네트워크 연결 확인.
+     */
+    public void checkNetwork() {
+        retryDisposable = new NetworkWatcher().check(App.getInstance().getContext())
+                .delay(300, TimeUnit.MILLISECONDS)  // ui 를 표시하기위한 딜레이 추가
+                .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+                .subscribe(isConnected -> {
+                    Log.i("APP# Model | checkNetwork", "| isConnected: " + isConnected);
+                    if (null != networkListener) {
+                        networkListener.onChangedConnection(isConnected, 0);
+                    }
+                }, Throwable::printStackTrace);
+    }
+
+    /**
+     * Model 로 부터 결과 값을 전달 받을 수 있는 interface 객체
+     *
+     * @return IModelResult
+     */
+    public IModelResult getListener() {
+        return listener;
+    }
+
+    /**
+     * Model 로 부터 결과 값을 전달 받을 객체 지정
+     *
+     * @param listener IModelResult
+     */
+    public void setListener(IModelResult listener) {
+        this.listener = listener;
+    }
+
+    /**
+     * Preferences 반환
+     *
+     * @return LifeplusPreferences
+     */
+    public LifeplusPreferences getPreferences() {
+        return SuperModel.getInstance().getPreferences();
+    }
+
+    /**
+     * is update from zumo?
+     *
+     * @return
+     */
+    public boolean isUpdateUser() {
+        LifeplusPreferences preferences = getPreferences();
+        return StringUtil.isFull(preferences.getZumoUserNo()) && preferences.isZumoUserUpdateCompleted() == false;
+    }
+
+    /**
+     * 멤버/게스트 확인
+     * - 블럭/휴면 계정도 비회원으로 처리됨.
+     *
+     * @return
+     */
+    public boolean isActiveMember() {
+        return SuperModel.getInstance().isActiveMember();
+    }
+
+    /**
+     * 회원 가입했는지 확인
+     *
+     * @return
+     */
+    public boolean isJoined() {
+        return SuperModel.getInstance().isJoined();
+    }
+
+    /**
+     * User ID (userNo)
+     *
+     * @return
+     */
+    public final String getUserNo() {
+        return SuperModel.getInstance().getUserNo();
+    }
+
+    /**
+     * User Name
+     *
+     * @return
+     */
+    public final String getUserName() {
+        return SuperModel.getInstance().getUserName();
+    }
+
+    /**
+     * User Email
+     *
+     * @return
+     */
+    public String getUserEmail() {
+        return SuperModel.getInstance().getUserEmail();
+    }
+
+    /**
+     * 네트워크 상태를 체크할 리스너 등록
+     *
+     * @param networkListener
+     */
+    public void setNetworkListener(INetworkReceiverListener networkListener) {
+        this.networkListener = networkListener;
+    }
+
+    /**
+     * Helper 제공자를 설정한다.
+     *
+     * @param helperProvider
+     */
+    public void setHelperProvider(IHelperProvider helperProvider) {
+        this.helperProvider = helperProvider;
+    }
+
+    /**
+     * Waiter(Loading) 을 호출해줄 객체 지정
+     *
+     * @param waiterCaller
+     */
+    public void setWaiterCaller(IWaiterCallable waiterCaller) {
+        this.waiterCaller = waiterCaller;
+    }
+
+    @Override
+    public <H extends Helper> H getHelper(Class<H> helperClass) {
+        return helperProvider.getHelper(helperClass);
+    }
+
+    /**
+     * 다음 화면(Fragment)으로 전달 할 데이터를 등록한다.
+     *
+     * @param packaging
+     */
+    public void setDeliveryPackaging(Object packaging) {
+        getHelper(DeliveryHelper.class).setPackaging(packaging);
+    }
+
+    /**
+     * 다음 화면(Fragment)으로 전달 할 데이터를 반환 @Nullable
+     *
+     * @param nameClass
+     * @return
+     */
+    @Nullable
+    public <T> T getDeliveryPackaging(Class<T> nameClass) {
+        return getHelper(DeliveryHelper.class).getPackaging(nameClass);
+    }
+
+    /**
+     * DeliveryHelper clearPackagingInternal()
+     */
+    public void clearDeliveryPackaging() {
+        getHelper(DeliveryHelper.class).clearPackaging();
+    }
+
+    /**
+     * 이전 화면(상위)에서 되돌아온 결과 데이터 등록
+     *
+     * @param packaging
+     */
+    public void setResultPackaging(Object packaging) {
+        Log.e("APP#  Model | setResultPackaging", "|" + " =============> " + packaging);
+        getHelper(DeliveryResultHelper.class).setPackaging(packaging);
+    }
+
+    /**
+     * 이전 화면(상위)에서 되돌아온 결과 데이터 반환
+     *
+     * @param nameClass
+     * @param <T>
+     * @return
+     */
+    @Nullable
+    public <T> T getResultPackaging(Class<T> nameClass) {
+        return getHelper(DeliveryResultHelper.class).getPackaging(nameClass);
+    }
+
+    /**
+     * 이전 화면(상위)에서 되돌아온 결과 데이터 clear
+     */
+    public void clearResultPackaging() {
+        getHelper(DeliveryResultHelper.class).clearPackaging();
+    }
+
+    /**
+     * 버킷 리스트 수를 파악한다.
+     *
+     * @param listener
+     */
+    public void loadMyBucketCount(IEventListener listener) {
+        disposableBucket = BucketListManager.getInstance().loadMyBucketList(
+                new BucketListRequestBean(1, 1000, ""),
+                new APIModuleListener<BucketListResultBean>(waiterCaller) {
+                    @Override
+                    public void onApiSuccess(BucketListResultBean resultBean) {
+                        listener.onEvent(new Event.Builder(Event.RESULT).integer(BucketListManager.getInstance().getBucketCount()).build());
+                    }
+
+                    @Override
+                    public void onApiError(String errorMessage, APIError error) {
+                        listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
+                    }
+                });
+    }
+
+    /**
+     * 북마크 수를 파악
+     *
+     * @param listener
+     */
+    public void loadMyBookMarkCount(IEventListener listener) {
+        disposableBookMarkList = BookmarkManager.getInstance().loadMyBookmark(new PageRequestBean(), new APIModuleListener<BookmarkListResultBean>(waiterCaller) {
+            @Override
+            public void onApiSuccess(BookmarkListResultBean resultBean) {
+                listener.onEvent(new Event.Builder(Event.RESULT).integer(BookmarkManager.getInstance().getCountOfBookmark()).build());
             }
-            else {
-              onApiError("", new APIError(APIError.ERROR_REASON));
+
+            @Override
+            public void onApiError(String errorMessage, APIError error) {
+                listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
             }
-          }
+        });
+    }
+
+    /**
+     * 최신 알림이 있는지 파악
+     *
+     * @param listener
+     */
+    public void loadNotiLatest(IEventListener listener) {
+        disposableNoti =
+                new APINoticeModule().call(new RequestBean(), new APIModuleListener<NoticeResultBean>(waiterCaller) {
+                            @Override
+                            public void onApiSuccess(NoticeResultBean resultBean) {
+                                List<NoticeBean> noticeBeans = resultBean.getData();
+
+                                if (null != noticeBeans && noticeBeans.size() > 0) {
+                                    // 마지막 시간과 비교해서 다르면 뉴 표시
+
+                                    Log.d("APP# Model | onApiSuccess, 369", "|" + noticeBeans.get(0).getOpeningDate());
+                                    if (SuperModel.getInstance().getPreferences().getNotiLatestTime().equals(noticeBeans.get(0).getOpeningDate())) {
+                                        // 새 알림 없음.
+                                        listener.onEvent(new Event.Builder(Event.SUCCESS).bool(false).build());
+                                    } else {
+                                        // 새 알림 있음.
+                                        listener.onEvent(new Event.Builder(Event.SUCCESS).bool(true).build());
+                                    }
+                                } else {
+                                    onApiError("", new APIError(APIError.ERROR_REASON));
+                                }
+                            }
+
+                            @Override
+                            public void onApiError(String errorMessage, APIError error) {
+                                listener.onEvent(new Event.Builder(Event.ERROR).bool(false).build());
+                            }
+                        }
+                );
+    }
+
+    /**
+     * 현 Screen ID 저장
+     *
+     * @param screenId
+     */
+    public void setScreenId(int screenId) {
+        this.screenId = screenId;
+    }
+
+    public int getScreenId() {
+        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
+     ***********************************/
+
+    @Override
+    public void createView() {
+        Log.w("APP#  Model | createView", "| -------->> " + this.getClass().getSimpleName());
+        createViewInternal();
+    }
+
+    @Override
+    public final void start() {
+        Log.w("APP#  Model | start", "| -------->> " + this.getClass().getSimpleName());
+        watchNetwork();
+        startInternal();
+    }
+
+    @Override
+    public final void resume() {
+        Log.w("APP# Model | resume", "| -------->> " + this.getClass().getSimpleName());
+        resumeInternal();
+    }
+
+    @Override
+    public final void pause() {
+        Log.i("APP#  Model | pause", "| " + this.getClass().getSimpleName() + " <<--------");
+        pauseInternal();
+    }
+
+    @Override
+    public final void stop() {
+        Log.i("APP# Model | stop", "| " + this.getClass().getSimpleName() + " <<--------");
+        stopNetworkWatching();
 
-          @Override
-          public void onApiError(String errorMessage, APIError error) {
-            listener.onEvent(new Event.Builder(Event.ERROR).bool(false).build());
-          }
+        if (null != disposableBucket) {
+            disposableBucket.dispose();
+            disposableBucket = null;
         }
-      );
-  }
-
-  /**
-   * 현 Screen ID 저장
-   *
-   * @param screenId
-   */
-  public void setScreenId(int screenId) {
-    this.screenId = screenId;
-  }
-
-  public int getScreenId() {
-    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
-   ***********************************/
-
-  @Override
-  public void createView() {
-    Log.w("APP#  Model | createView", "| -------->> " + this.getClass().getSimpleName());
-    createViewInternal();
-  }
-
-  @Override
-  public final void start() {
-    Log.w("APP#  Model | start", "| -------->> " + this.getClass().getSimpleName());
-    watchNetwork();
-    startInternal();
-  }
-
-  @Override
-  public final void resume() {
-    Log.w("APP# Model | resume", "| -------->> " + this.getClass().getSimpleName());
-    resumeInternal();
-  }
-
-  @Override
-  public final void pause() {
-    Log.i("APP#  Model | pause", "| " + this.getClass().getSimpleName() + " <<--------");
-    pauseInternal();
-  }
-
-  @Override
-  public final void stop() {
-    Log.i("APP# Model | stop", "| " + this.getClass().getSimpleName() + " <<--------");
-    stopNetworkWatching();
-
-    if (null != disposableBucket) {
-      disposableBucket.dispose();
-      disposableBucket = null;
-    }
-    if (null != disposableBookMarkList) {
-      disposableBookMarkList.dispose();
-      disposableBookMarkList = null;
-    }
-
-    stopInternal();
-  }
-
-  @Override
-  public void destroyView() {
-    Log.i("APP# Model | destroyView", "| " + this.getClass().getSimpleName() + " <<--------");
-    destroyViewInternal();
-  }
-
-  /**
-   * dispose
-   * - Model 은 Activity 가 destroy 될 때 함께 destroy 된다.
-   */
-  @Override
-  public final void destroy() {
-    Log.i("APP# Model | destroy", "| model: " + this.getClass().getSimpleName() + "<<<<<<<<<<<<");
-    destroyInternal();
-  }
-
-  protected abstract void createViewInternal();
-
-  protected abstract void destroyInternal();
-
-  protected abstract void destroyViewInternal();
-
-  protected abstract void startInternal();
-
-  protected abstract void stopInternal();
-
-  protected abstract void resumeInternal();
-
-  protected abstract void pauseInternal();
-
-  @Override
-  protected void onCleared() {
-    super.onCleared();
-
-    destroy();
-  }
+        if (null != disposableBookMarkList) {
+            disposableBookMarkList.dispose();
+            disposableBookMarkList = null;
+        }
+
+        stopInternal();
+    }
+
+    @Override
+    public void destroyView() {
+        Log.i("APP# Model | destroyView", "| " + this.getClass().getSimpleName() + " <<--------");
+        destroyViewInternal();
+    }
+
+    /**
+     * dispose
+     * - Model 은 Activity 가 destroy 될 때 함께 destroy 된다.
+     */
+    @Override
+    public final void destroy() {
+        Log.i("APP# Model | destroy", "| model: " + this.getClass().getSimpleName() + "<<<<<<<<<<<<");
+        destroyInternal();
+    }
+
+    protected abstract void createViewInternal();
+
+    protected abstract void destroyInternal();
+
+    protected abstract void destroyViewInternal();
+
+    protected abstract void startInternal();
+
+    protected abstract void stopInternal();
+
+    protected abstract void resumeInternal();
+
+    protected abstract void pauseInternal();
+
+    @Override
+    protected void onCleared() {
+        super.onCleared();
+
+        destroy();
+    }
 }

+ 3 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/splash/SplashDebugPresenter.java

@@ -68,6 +68,9 @@ public class SplashDebugPresenter extends ScreenStarterPresenter<SplashModel, IS
   @Override
   protected void startInternalOnce() {
 
+    //TODO: 주모 유저넘버 업데이트 테스트 필요
+//    SuperModel.getInstance().getPreferences().getZumoUserNoOnce();
+
     // 최초 실행 기준 1회 사용자에게 관련 권한 내용 고지
     // 권한 내용 고지 완료 후 퍼미션 확인 프로세스 진행
     if (model.getFirstDialogCompleted() == false) {