From 72a2e71ffda5d5fe4bc72167e1dec159bf2f6921 Mon Sep 17 00:00:00 2001 From: Neo Date: Thu, 4 Jun 2026 00:09:51 +0800 Subject: [PATCH 1/2] perf: fix UI freeze in New Project Wizard by moving version fetching to async pre-fetch --- .../AndroidStudioTemplateProvider.kt | 14 +++ .../projectwizard/CMPTemplate.kt | 9 +- .../projectwizard/ComposeTemplate.kt | 8 -- .../projectwizard/XMLTemplate.kt | 8 -- .../projectwizard/gradle/Version.kt | 115 ++++++++++-------- .../gradle/network/GetVersions.kt | 21 ++-- 6 files changed, 91 insertions(+), 84 deletions(-) diff --git a/src/main/kotlin/com/github/cnrture/quickprojectwizard/projectwizard/AndroidStudioTemplateProvider.kt b/src/main/kotlin/com/github/cnrture/quickprojectwizard/projectwizard/AndroidStudioTemplateProvider.kt index d884cf4c..8ddba7de 100644 --- a/src/main/kotlin/com/github/cnrture/quickprojectwizard/projectwizard/AndroidStudioTemplateProvider.kt +++ b/src/main/kotlin/com/github/cnrture/quickprojectwizard/projectwizard/AndroidStudioTemplateProvider.kt @@ -2,7 +2,21 @@ package com.github.cnrture.quickprojectwizard.projectwizard import com.android.tools.idea.wizard.template.Template import com.android.tools.idea.wizard.template.WizardTemplateProvider +import com.github.cnrture.quickprojectwizard.projectwizard.gradle.network.getVersions +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch class AndroidStudioTemplateProvider : WizardTemplateProvider() { + private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO) + + init { + // Start fetching versions asynchronously as soon as the provider is initialized + scope.launch { + getVersions() + } + } + override fun getTemplates(): List