浏览代码

[공통][Bug] 액티비티 - changeActivity() 제거, prepareFinishing() 추가

hyodong.min 7 年之前
父节点
当前提交
7673b6ff98

+ 1 - 11
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityBase.java

@@ -4,7 +4,6 @@
 package kr.co.zumo.app.lifeplus.activity;
 
 import android.app.Activity;
-import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.CallSuper;
 import android.support.v7.app.AppCompatActivity;
@@ -13,16 +12,12 @@ import android.view.MenuItem;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
-import kr.co.zumo.app.R;
-import kr.co.zumo.app.lifeplus.activity.factory.ActivityFactory;
-import kr.co.zumo.app.lifeplus.bean.JsonBeanBase;
 import kr.co.zumo.app.lifeplus.config.NetworkConfig;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.network.InternetStatus;
 import kr.co.zumo.app.lifeplus.network.NetworkReceiver;
 import kr.co.zumo.app.lifeplus.supervisor.DialogHelper;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
-import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.util.AppUtil;
 import kr.co.zumo.app.lifeplus.view.IView;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
@@ -188,13 +183,8 @@ public abstract class ActivityBase<P extends Presenter> extends AppCompatActivit
   }
 
   @Override
-  public void changeActivity(@ScreenID.ActivityID int activityId, JsonBeanBase bean) {
+  public void prepareFinishing() {
     stopNetworkWatching();
-
-    ActivityFactory factory = new ActivityFactory();
-    Intent intent = new Intent(this, factory.getActivityClass(activityId));
-    startActivity(intent);
-    overridePendingTransition(R.anim.none, R.anim.exit);
   }
 }
 

+ 4 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/view/IView.java

@@ -6,9 +6,6 @@ package kr.co.zumo.app.lifeplus.view;
 
 import android.app.Activity;
 
-import kr.co.zumo.app.lifeplus.bean.JsonBeanBase;
-import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
-
 /**
  * IView
  * <pre>
@@ -23,12 +20,12 @@ import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 public interface IView {
 
   /**
-   * 액티비티를 변경한다.
+   * 액티비티 종료를 준비한다.
+   * - 다시 복구하지 않을 구독 객체 등을 dispose 시킨다.
+   * - onDestroy() dispose 작업을 할 경우 다음 액티비티가 실행되고 전환 뒤에 호출되기 때문에 일부 옵저버가 겹치는 경향이 있어서 별도로 준비
    *
-   * @param activityId
-   * @param bean
    */
-  void changeActivity(@ScreenID.ActivityID int activityId, JsonBeanBase bean);
+  void prepareFinishing();
 
 
   /**

+ 5 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/ActivityChangeCommand.java

@@ -43,22 +43,25 @@ public class ActivityChangeCommand extends Command<Model, IView, Presenter> {
 
   @Override
   public void execute(Model model, IView view, Presenter presenter) {
-    ActivityFactory factory = new ActivityFactory();
     Activity activity = view.getActivity();
+    ActivityFactory factory = new ActivityFactory();
     ActivityChanger changer = new ActivityChanger(activity, factory);
 
     switch (direction) {
       case ScreenID.DIRECTION_NEXT:
+        view.prepareFinishing();
         changer.changeToNext(activityId);
         break;
       case ScreenID.DIRECTION_BACK:
+        view.prepareFinishing();
         changer.changeToBack(activityId);
         break;
       case ScreenID.DIRECTION_NONE:
+        view.prepareFinishing();
         changer.changeTo(activityId);
         break;
       default:
-        break;
+        throw new RuntimeException("unsupported direction");
     }
   }
 

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/JoinCommand.java

@@ -28,7 +28,7 @@ public class JoinCommand extends SignUpCommand {
   public void execute(SignUpModel model, ISignUpView view, SignUpPresenter presenter) {
     // todo 회원 가입 처리 후 화면 이동
 
-    view.changeActivity(ScreenID.ACTIVITY_MAIN, null);
+    presenter.onCommand(new ActivityChangeCommand(ScreenID.ACTIVITY_MAIN, ScreenID.DIRECTION_NEXT));
 
   }
 

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/NetworkErrorCommand.java

@@ -49,7 +49,7 @@ public class NetworkErrorCommand extends Command<NetworkErrorModel, INetworkErro
         Log.i("APP# NetworkDisconnectedFragmentPresenter | checkNetworkConnection", "| isConnected: " + isConnected);
         if (isConnected) {
           // 메인으로 이동
-          view.changeActivity(ScreenID.ACTIVITY_MAIN, null);
+          presenter.onCommand(new ActivityChangeCommand(ScreenID.ACTIVITY_MAIN, ScreenID.DIRECTION_NEXT));
         }
         else {
           // 그냥 그대로 있음;

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/PinVerifyCommand.java

@@ -53,7 +53,7 @@ public class PinVerifyCommand extends PinCommand {
         if (null != bean && StringUtil.isFull(bean.getReturnMessage())) {
           // 검증 완료
           view.dismissPinDialog();
-          view.changeActivity(ScreenID.ACTIVITY_MAIN, null);
+          presenter.onCommand(new ActivityChangeCommand(ScreenID.ACTIVITY_MAIN, ScreenID.DIRECTION_NEXT));
         }
         else {
           // 검증 실패, 재입력

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/TutorialCommand.java

@@ -36,7 +36,7 @@ public class TutorialCommand extends Command<TutorialModel, ITutorialView, Tutor
   @Override
   public void execute(TutorialModel model, ITutorialView view, TutorialPresenter presenter) {
     if (Event.TUTORIAL_CLOSE == eventId) {
-      view.changeActivity(ScreenID.ACTIVITY_MAIN, null);
+      presenter.onCommand(new ActivityChangeCommand(ScreenID.ACTIVITY_MAIN, ScreenID.DIRECTION_NEXT));
       // tutorial 본 것으로 표시
       SuperModel.getInstance().getPreferences().setTutorialDone();
     }