浏览代码

[스플래시][New] 리팩토링
- 팝업 인포 중복 로드 제거
- 온보딩 액티비티 추가

hyodong.min 6 年之前
父节点
当前提交
213b19b005

+ 5 - 0
app/src/main/AndroidManifest.xml

@@ -75,6 +75,11 @@
       android:screenOrientation="portrait"
       android:windowSoftInputMode="adjustResize">
     </activity>
+    <activity
+      android:name=".lifeplus.activity.OnBoardingActivity"
+      android:screenOrientation="portrait"
+      android:windowSoftInputMode="adjustResize">
+    </activity>
     <activity
       android:name=".lifeplus.activity.NotiActivity"
       android:launchMode="singleTask"

+ 42 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/OnBoardingActivity.java

@@ -0,0 +1,42 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.activity;
+
+import android.content.Intent;
+
+import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
+
+/**
+ * OnBoardingActivity
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 9. 5.]   [최초 작성]
+ * @since 2018. 9. 5.
+ */
+public class OnBoardingActivity extends ActivityBaseScreen {
+
+  @Override
+  protected void render() {
+    // 첫 화면 표시
+    launchScreen(ScreenID.ON_BOARDING);
+  }
+
+  @Override
+  protected void onAfterNewIntent(Intent intent) {
+  }
+
+  @Override
+  protected void onAfterDestroy() {
+  }
+
+  @Override
+  protected void onBeforeDestroy() {
+  }
+
+}
+
+

+ 25 - 21
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ScreenStarter.java

@@ -125,31 +125,35 @@ public class ScreenStarter implements IModuleEmergencyHandler {
   }
 
   private void loadPopupInfo() {
-    disposable = new APIPopupLoadModule().call(new RequestBean(), new APIModuleListener<PopupInfoResultBean>() {
-      @Override
-      public void onApiSuccess(PopupInfoResultBean resultBean) {
-        PopupInfoListBean popupInfoListBean = resultBean.getData();
-        if (null != popupInfoListBean) {
-          SystemPopupManager.getInstance().setPromotionPopupBeans(popupInfoListBean.getPromotionPopupList());
-          SystemPopupManager.getInstance().setSystemPopupBeans(popupInfoListBean.getSystemPopupList());
-        }
+    if (SystemPopupManager.getInstance().hasData()) {
+      launchInternal();
+    }
+    else {
+      disposable = new APIPopupLoadModule().call(new RequestBean(), new APIModuleListener<PopupInfoResultBean>() {
+        @Override
+        public void onApiSuccess(PopupInfoResultBean resultBean) {
+          PopupInfoListBean popupInfoListBean = resultBean.getData();
+          if (null != popupInfoListBean) {
+            SystemPopupManager.getInstance().setPromotionPopupBeans(popupInfoListBean.getPromotionPopupList());
+            SystemPopupManager.getInstance().setSystemPopupBeans(popupInfoListBean.getSystemPopupList());
+          }
 
-        if (SystemPopupManager.getInstance().isClosing()) {
-          // 시스템 점검 중...
-          ActivityDeliveryHelper.getInstance().setPackaging(SystemPopupManager.getInstance().getMatchedBean());
-          gotoScreen(START_FROM_SYSTEM_CHECK);
+          if (SystemPopupManager.getInstance().isClosing()) {
+            // 시스템 점검 중...
+            ActivityDeliveryHelper.getInstance().setPackaging(SystemPopupManager.getInstance().getMatchedBean());
+            gotoScreen(START_FROM_SYSTEM_CHECK);
+          }
+          else {
+            launchInternal();
+          }
         }
-        else {
+
+        @Override
+        public void onApiError(String errorMessage, APIError error) {
           launchInternal();
         }
-      }
-
-      @Override
-      public void onApiError(String errorMessage, APIError error) {
-//        showErrorPopup(errorMessage);
-        launchInternal();
-      }
-    });
+      });
+    }
   }
 
   private void login() {

+ 9 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/activity/SplashActivity.java

@@ -187,9 +187,15 @@ public class SplashActivity extends ActivityBaseSetup implements ISplashContract
   }
 
   private void linkActivity(int fragmentFlag) {
-    Intent intent = new Intent(this, MainActivity.class);
-    intent.putExtra(ScreenStarter.FLAG_FRAGMENT, fragmentFlag);
-    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+    Intent intent;
+    if (fragmentFlag == ScreenStarter.START_FROM_ON_BOARDING) {
+      intent = new Intent(this, OnBoardingActivity.class);
+    }
+    else {
+      intent = new Intent(this, MainActivity.class);
+      intent.putExtra(ScreenStarter.FLAG_FRAGMENT, fragmentFlag);
+      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+    }
 
     finish();
     overridePendingTransition(R.anim.none, R.anim.none);

+ 0 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/helper/NavigationBar.java

@@ -5,7 +5,6 @@ package kr.co.zumo.app.lifeplus.helper;
 
 import android.content.Context;
 import android.support.annotation.StringRes;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
@@ -194,7 +193,6 @@ public class NavigationBar {
   }
 
   private void setTextButtonVisible(boolean isVisible) {
-    Log.e("APP#  NavigationBar | setTextButtonVisible", "|" + isVisible);
     setViewVisible(textButton, isVisible);
   }
 

+ 1 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainModel.java

@@ -201,6 +201,7 @@ public class MainModel extends Model {
       });
     }
     else {
+      Log.d("APP# MainModel | loadPopupInfo", "|" + " 팝업 데이터 재사용 ---------------");
       SystemPopupManager.getInstance().setAvailableRefresh();
       promotionPopupBeans = SystemPopupManager.getInstance().getPromotionPopupBeans();
       sortPopupList(promotionPopupBeans);

+ 0 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainPresenter.java

@@ -73,7 +73,6 @@ public class MainPresenter extends Presenter<MainModel, IMainView> {
     LoginBean loginBean = model.getDeliveryPackaging(LoginBean.class);
     if (null != loginBean) {
       Log.i("APP# MainPresenter | MemberBlockPresenter", "|" + ": " + loginBean.toJson());
-      int coin = loginBean.getIntCoin();
       model.clearDeliveryPackaging();
     }
   }

+ 9 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/SystemPopupManager.java

@@ -35,14 +35,18 @@ public class SystemPopupManager {
   private List<SystemPopupBean> systemPopupBeans;
   private List<PromotionPopupBean> promotionPopupBeans;
   private SystemPopupBean matchedBean;
+
+  private boolean hasData = false;
   private boolean isAvailableRefresh = false;
 
   public void setSystemPopupBeans(List<SystemPopupBean> systemPopupBeans) {
     this.systemPopupBeans = systemPopupBeans;
+    hasData = true;
   }
 
   public void setPromotionPopupBeans(List<PromotionPopupBean> promotionPopupBeans) {
     this.promotionPopupBeans = promotionPopupBeans;
+    hasData = true;
   }
 
   public List<PromotionPopupBean> getPromotionPopupBeans() {
@@ -66,6 +70,9 @@ public class SystemPopupManager {
     isAvailableRefresh = true;
   }
 
+  public boolean hasData() {
+    return hasData;
+  }
 
   /*
 
@@ -146,5 +153,7 @@ public class SystemPopupManager {
     systemPopupBeans = null;
     promotionPopupBeans = null;
     matchedBean = null;
+    isAvailableRefresh = false;
+    hasData = false;
   }
 }

+ 12 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/onboarding/OnBoardingPresenter.java

@@ -26,7 +26,7 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
  * @since 2018. 9. 21.
  */
 public class OnBoardingPresenter extends Presenter<BlankModel, IOnBoardingView> {
-  ScreenStarter starter;
+  private ScreenStarter starter;
 
   public OnBoardingPresenter(BlankModel model, IOnBoardingView view) {
     super(model, view);
@@ -93,12 +93,12 @@ public class OnBoardingPresenter extends Presenter<BlankModel, IOnBoardingView>
           // 회원 전환 -> 온보딩에서 진입 표시
           model.setDeliveryPackaging(new OnBoardingOptionBean(true));
           SuperModel.getInstance().getPreferences().setOnBoardingDone(true);
-          go(ScreenID.SIGN_UP_START);
+          next(() -> go(ScreenID.SIGN_UP_START));
           break;
         case Event.ON_BOARDING_CLOSE:
           // 시작하기, tutorial 본 것으로 표시
           SuperModel.getInstance().getPreferences().setOnBoardingDone(true);
-          home();
+          next(this::home);
           break;
         default:
           break;
@@ -113,12 +113,12 @@ public class OnBoardingPresenter extends Presenter<BlankModel, IOnBoardingView>
         case Event.ON_BOARDING_CONFIRM:
           // 회원확인하기 tutorial 본 것으로 표시
           SuperModel.getInstance().getPreferences().setOnBoardingDone(true);
-          go(ScreenID.SIGN_UP_START);
+          next(() -> go(ScreenID.SIGN_UP_START));
           break;
         case Event.ON_BOARDING_CLOSE:
           // 시작하기, tutorial 본 것으로 표시
           SuperModel.getInstance().getPreferences().setOnBoardingDone(true);
-          home();
+          next(this::home);
           break;
         default:
           break;
@@ -127,6 +127,13 @@ public class OnBoardingPresenter extends Presenter<BlankModel, IOnBoardingView>
 
   }
 
+  private void next(Runnable next) {
+    starter = new ScreenStarter(view.getActivity());
+    starter.launch(true, (context, fragmentFlag) -> {
+      next.run();
+    });
+  }
+
   @Override
   public void onScreenReady() {
     view.draw(model.isUpdateUser());