diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt index 472734ffa..27265ed16 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/resources/ResourceTableRegistry.kt @@ -43,10 +43,12 @@ interface ResourceTableRegistry : XmlRegistry { @JvmStatic val COMPLETION_MANIFEST_ATTR_RES = Lookup.Key() + private var sInstance: ResourceTableRegistry? = null + @JvmStatic fun getInstance(): ResourceTableRegistry { val klass = ResourceTableRegistry::class.java - return ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() + return sInstance ?: ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow().also { sInstance = it } } } diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt index fcdb23917..b5dc207aa 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/versions/ApiVersionsRegistry.kt @@ -30,12 +30,17 @@ import com.itsaky.androidide.xml.registry.XmlRegistry * @author Akash Yadav */ interface ApiVersionsRegistry : XmlRegistry { + companion object { + private var sInstance: ApiVersionsRegistry? = null + /** Get the default instance of [ApiVersionsRegistry]. */ - @JvmStatic fun getInstance(): ApiVersionsRegistry { + @JvmStatic + fun getInstance(): ApiVersionsRegistry { val klass = ApiVersionsRegistry::class.java - return ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() + return sInstance ?: ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() + .also { sInstance = it } } } } diff --git a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt index c36b9905b..4b5196cc8 100644 --- a/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt +++ b/subprojects/xml-utils/src/main/java/com/itsaky/androidide/xml/widgets/WidgetTableRegistry.kt @@ -30,11 +30,14 @@ interface WidgetTableRegistry : XmlRegistry { companion object { + private var sInstance: WidgetTableRegistry? = null + /** Get the default instance of [WidgetTableRegistry]. */ @JvmStatic fun getInstance(): WidgetTableRegistry { val klass = WidgetTableRegistry::class.java - return ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() + return sInstance ?: ServiceLoader.load(klass, klass.classLoader).findFirstOrThrow() + .also { sInstance = it } } } }