diff --git a/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt index aaee5e76e..4578c1e0c 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt @@ -245,12 +245,12 @@ abstract class BaseEditorActivity : override fun onStop() { super.onStop() - this.isDestroying = isFinishing EventBus.getDefault().unregister(this) } override fun onPause() { super.onPause() + this.isDestroying = isFinishing getFileTreeFragment()?.saveTreeState() } diff --git a/app/src/main/java/com/itsaky/androidide/activities/editor/EditorHandlerActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/editor/EditorHandlerActivity.kt index 4526f65b1..c44fe5be7 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/editor/EditorHandlerActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/editor/EditorHandlerActivity.kt @@ -121,7 +121,7 @@ open class EditorHandlerActivity : ProjectHandlerActivity(), IEditorHandler { override fun onPause() { - if (isFinishing) { + if (isDestroying) { IDEColorSchemeProvider.destroy() } @@ -138,7 +138,7 @@ open class EditorHandlerActivity : ProjectHandlerActivity(), IEditorHandler { getOpenedFiles().also { val cache = OpenedFilesCache(current, it) viewModel.writeOpenedFiles(cache) - viewModel.openedFilesCache = if (!isFinishing) cache else null + viewModel.openedFilesCache = if (!isDestroying) cache else null } } diff --git a/app/src/main/java/com/itsaky/androidide/activities/editor/ProjectHandlerActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/editor/ProjectHandlerActivity.kt index b36686224..ea1d8d50a 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/editor/ProjectHandlerActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/editor/ProjectHandlerActivity.kt @@ -36,6 +36,7 @@ import com.itsaky.androidide.lookup.Lookup import com.itsaky.androidide.lsp.IDELanguageClientImpl import com.itsaky.androidide.preferences.internal.NO_OPENED_PROJECT import com.itsaky.androidide.preferences.internal.lastOpenedProject +import com.itsaky.androidide.projects.ProjectManager import com.itsaky.androidide.projects.ProjectManager.cachedInitResult import com.itsaky.androidide.projects.ProjectManager.getProjectDirPath import com.itsaky.androidide.projects.ProjectManager.notifyProjectUpdate @@ -97,12 +98,11 @@ abstract class ProjectHandlerActivity : BaseEditorActivity(), IProjectHandler { override fun onPause() { super.onPause() - if (isFinishing) { + if (isDestroying) { // reset these values here // sometimes, when the IDE closed and reopened instantly, these values prevent initialization // of the project - projectInitialized = false - cachedInitResult = null + ProjectManager.destroy() viewModel.isInitializing = false viewModel.isBuildInProgress = false diff --git a/subprojects/projects/src/main/java/com/itsaky/androidide/projects/ProjectManager.kt b/subprojects/projects/src/main/java/com/itsaky/androidide/projects/ProjectManager.kt index 16fe8e044..e5d9c5402 100644 --- a/subprojects/projects/src/main/java/com/itsaky/androidide/projects/ProjectManager.kt +++ b/subprojects/projects/src/main/java/com/itsaky/androidide/projects/ProjectManager.kt @@ -72,6 +72,14 @@ object ProjectManager : EventReceiver { } } } + + fun destroy() { + log.info("Destroying project manager") + this.rootProject = null + this.app = null + this.cachedInitResult = null + this.projectInitialized = false + } fun getProjectDir(): File { return File(getProjectDirPath()) diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index 5fd284207..535ba83ab 100644 Binary files a/tests/test-home/.androidide/init/model.jar and b/tests/test-home/.androidide/init/model.jar differ