瀏覽代碼

[공통][Bug] 앱 종료 후 연속으로 재시작 되는 현상 패치

hyodong.min 7 年之前
父節點
當前提交
41703f5722

+ 18 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityBase.java

@@ -54,10 +54,11 @@ public abstract class ActivityBase extends AppCompatActivity {
   public static final int SLIDE_TYPE_ACTIVITY = 0;
   public static final int SLIDE_TYPE_HOME = 1;
   public static final int SLIDE_TYPE_DIALOG = 2;
+  public static final int SLIDE_TYPE_NONE = 3;
 
   @Retention(RetentionPolicy.SOURCE)
   @IntDef({
-    SLIDE_TYPE_ACTIVITY, SLIDE_TYPE_DIALOG, SLIDE_TYPE_HOME
+    SLIDE_TYPE_ACTIVITY, SLIDE_TYPE_DIALOG, SLIDE_TYPE_HOME, SLIDE_TYPE_NONE
   })
   public @interface SlideType {}
 
@@ -155,6 +156,15 @@ public abstract class ActivityBase extends AppCompatActivity {
     Log.w("APP# ActivityBase | onRestoreInstanceState", "| >>>>>> " + this.getClass().getSimpleName() + " HC: " + this.hashCode());
   }
 
+  @Override
+  protected final void onSaveInstanceState(Bundle outState) {
+    /**
+     * crash 후 앱 복원을 막기 위해서
+     */
+    outState = new Bundle();
+    super.onSaveInstanceState(outState);
+  }
+
   @Override
   protected final void onRestart() {
     Log.w("APP# ActivityBase | onRestart", "| >>>> " + this.getClass().getSimpleName() + " HC: " + this.hashCode());
@@ -198,7 +208,7 @@ public abstract class ActivityBase extends AppCompatActivity {
 
     if (allowCountActivity()) {
       App.getInstance().removeActivityCount();
-      if (App.getInstance().isFinished()) {
+      if (App.getInstance().isDisposable()) {
         new AppInitializer().dispose(this);
       }
     }
@@ -208,6 +218,9 @@ public abstract class ActivityBase extends AppCompatActivity {
     intent.putExtra(SLIDE_TYPE, type);
     super.startActivity(intent);
     switch (type) {
+      case SLIDE_TYPE_NONE:
+        overridePendingTransition(R.anim.none, R.anim.none);
+        break;
       case SLIDE_TYPE_HOME:
         overridePendingTransition(R.anim.activity_scale_in, R.anim.activity_scale_out);
         break;
@@ -234,6 +247,9 @@ public abstract class ActivityBase extends AppCompatActivity {
     switch (slideType) {
       case SLIDE_TYPE_HOME:
         break;
+      case SLIDE_TYPE_NONE:
+        overridePendingTransition(R.anim.none, R.anim.none);
+        break;
       case SLIDE_TYPE_DIALOG:
         overridePendingTransition(R.anim.none, R.anim.activity_slide_down);
         break;

+ 8 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityScreen.java

@@ -5,6 +5,8 @@ package kr.co.zumo.app.lifeplus.activity;
 
 import android.content.Intent;
 
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.application.App;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
 
 /**
@@ -27,9 +29,13 @@ public abstract class ActivityScreen extends ActivityBase {
       render();
     }
     else {
-      // 앱이 다시 실행된 경우
-      startActivity(new Intent(this, SplashActivity.class));
+      // 초기화를 막기 위해서 카운트 1 더해줌.
+      App.getInstance().addActivityCount();
+
       finish();
+      overridePendingTransition(R.anim.none, R.anim.none);
+      // 앱이 다시 실행된 경우
+      startActivity(new Intent(this, SplashActivity.class), SLIDE_TYPE_NONE);
     }
   }
 

+ 7 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/application/App.java

@@ -76,7 +76,12 @@ public class App extends MultiDexApplication {
    */
   public void removeActivityCount() {
     --countOfActivities;
-    Log.i("APP# App | removeActivityCount", "|" + " countOfActivities: " + countOfActivities);
+    if (isDisposable()) {
+      Log.i("APP# App | removeActivityCount", "|" + " countOfActivities: " + countOfActivities);
+      Log.w("APP# App | removeActivityCount", "|" + " ############################################ ready for dispose ##########################");
+      Log.w("APP# App | removeActivityCount", "|" + " ############################################ ready for dispose ##########################");
+      Log.w("APP# App | removeActivityCount", "|" + " ############################################ ready for dispose ##########################");
+    }
   }
 
   /**
@@ -84,7 +89,7 @@ public class App extends MultiDexApplication {
    *
    * @return
    */
-  public boolean isFinished() {
+  public boolean isDisposable() {
     return countOfActivities < 1;
   }
 }