diff --git a/app/src/main/java/uk/co/ribot/androidboilerplate/ui/base/BaseActivity.java b/app/src/main/java/uk/co/ribot/androidboilerplate/ui/base/BaseActivity.java index 280500fc..4e922e7b 100644 --- a/app/src/main/java/uk/co/ribot/androidboilerplate/ui/base/BaseActivity.java +++ b/app/src/main/java/uk/co/ribot/androidboilerplate/ui/base/BaseActivity.java @@ -3,6 +3,7 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import java.lang.Thread.UncaughtExceptionHandler; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; @@ -35,7 +36,7 @@ protected void onCreate(Bundle savedInstanceState) { // Create the ActivityComponent and reuses cached ConfigPersistentComponent if this is // being called after a configuration change. mActivityId = savedInstanceState != null ? - savedInstanceState.getLong(KEY_ACTIVITY_ID) : NEXT_ID.getAndIncrement(); + savedInstanceState.getLong(KEY_ACTIVITY_ID) : NEXT_ID.getAndIncrement(); ConfigPersistentComponent configPersistentComponent; if (!sComponentsMap.containsKey(mActivityId)) { Timber.i("Creating new ConfigPersistentComponent id=%d", mActivityId); @@ -48,6 +49,15 @@ protected void onCreate(Bundle savedInstanceState) { configPersistentComponent = sComponentsMap.get(mActivityId); } mActivityComponent = configPersistentComponent.activityComponent(new ActivityModule(this)); + + final UncaughtExceptionHandler exceptionHandler = Thread.getDefaultUncaughtExceptionHandler(); + Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { + @Override + public void uncaughtException(Thread thread, Throwable throwable) { + sComponentsMap.remove(mActivityId); + exceptionHandler.uncaughtException(thread, throwable); + } + }); } @Override diff --git a/app/src/main/java/uk/co/ribot/androidboilerplate/ui/main/MainActivity.java b/app/src/main/java/uk/co/ribot/androidboilerplate/ui/main/MainActivity.java index cf221c8b..a7a0e939 100644 --- a/app/src/main/java/uk/co/ribot/androidboilerplate/ui/main/MainActivity.java +++ b/app/src/main/java/uk/co/ribot/androidboilerplate/ui/main/MainActivity.java @@ -56,6 +56,7 @@ protected void onCreate(Bundle savedInstanceState) { if (getIntent().getBooleanExtra(EXTRA_TRIGGER_SYNC_FLAG, true)) { startService(SyncService.getStartIntent(this)); } + } @Override