Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit 52a6117

Browse files
committed
fix: cut down memory usage in ApiVersionsRegistry
This commit adds the following improvements to the ApiVersionsRegistry implementation : - Use Java StAX parser for memory-efficient XML processing - Reduce object allocations for representing API version info by reusing ApiVersion instances which represent the same API versions. - Trim method return types in method signature strings to reduce memory usage by a small amount - A single model class is now used to represent the API information. Earlier, we had different classes to represent API info for classes, fields and metnods.
1 parent c3e1330 commit 52a6117

File tree

32 files changed

+343
-738
lines changed

32 files changed

+343
-738
lines changed

core/app/src/main/java/com/itsaky/androidide/actions/file/SaveFileAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import androidx.core.content.ContextCompat
2222
import com.itsaky.androidide.actions.ActionData
2323
import com.itsaky.androidide.actions.EditorRelatedAction
2424
import com.itsaky.androidide.models.SaveResult
25-
import com.itsaky.androidide.projects.ProjectManagerImpl
25+
import com.itsaky.androidide.projects.internal.ProjectManagerImpl
2626
import com.itsaky.androidide.resources.R
2727
import com.itsaky.androidide.utils.flashError
2828
import com.itsaky.androidide.utils.flashSuccess

core/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import com.itsaky.androidide.activities.editor.EditorActivityKt
3232
import com.itsaky.androidide.app.EdgeToEdgeIDEActivity
3333
import com.itsaky.androidide.databinding.ActivityMainBinding
3434
import com.itsaky.androidide.preferences.internal.GeneralPreferences
35-
import com.itsaky.androidide.projects.ProjectManagerImpl
35+
import com.itsaky.androidide.projects.internal.ProjectManagerImpl
3636
import com.itsaky.androidide.resources.R.string
3737
import com.itsaky.androidide.templates.ITemplateProvider
3838
import com.itsaky.androidide.utils.DialogUtils

core/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ import com.itsaky.androidide.models.Range
8484
import com.itsaky.androidide.models.SearchResult
8585
import com.itsaky.androidide.preferences.internal.BuildPreferences
8686
import com.itsaky.androidide.projects.IProjectManager
87-
import com.itsaky.androidide.projects.ProjectManagerImpl
87+
import com.itsaky.androidide.projects.internal.ProjectManagerImpl
8888
import com.itsaky.androidide.tasks.cancelIfActive
8989
import com.itsaky.androidide.ui.CodeEditorView
9090
import com.itsaky.androidide.ui.ContentTranslatingDrawerLayout

core/app/src/main/java/com/itsaky/androidide/activities/editor/EditorHandlerActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ import com.itsaky.androidide.models.OpenedFile
5151
import com.itsaky.androidide.models.OpenedFilesCache
5252
import com.itsaky.androidide.models.Range
5353
import com.itsaky.androidide.models.SaveResult
54-
import com.itsaky.androidide.projects.ProjectManagerImpl
54+
import com.itsaky.androidide.projects.internal.ProjectManagerImpl
5555
import com.itsaky.androidide.tasks.executeAsync
5656
import com.itsaky.androidide.ui.CodeEditorView
5757
import com.itsaky.androidide.utils.DialogUtils.newYesNoDialog

core/app/src/main/java/com/itsaky/androidide/activities/editor/ProjectHandlerActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import com.itsaky.androidide.lookup.Lookup
3939
import com.itsaky.androidide.lsp.IDELanguageClientImpl
4040
import com.itsaky.androidide.lsp.java.utils.CancelChecker
4141
import com.itsaky.androidide.preferences.internal.GeneralPreferences
42-
import com.itsaky.androidide.projects.ProjectManagerImpl
42+
import com.itsaky.androidide.projects.internal.ProjectManagerImpl
4343
import com.itsaky.androidide.projects.api.GradleProject
4444
import com.itsaky.androidide.projects.builder.BuildService
4545
import com.itsaky.androidide.services.builder.GradleBuildService

core/app/src/main/java/com/itsaky/androidide/handlers/EditorActivityLifecyclerObserver.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import com.itsaky.androidide.eventbus.events.editor.OnPauseEvent
2828
import com.itsaky.androidide.eventbus.events.editor.OnResumeEvent
2929
import com.itsaky.androidide.eventbus.events.editor.OnStartEvent
3030
import com.itsaky.androidide.eventbus.events.editor.OnStopEvent
31-
import com.itsaky.androidide.projects.ProjectManagerImpl
31+
import com.itsaky.androidide.projects.internal.ProjectManagerImpl
3232
import com.itsaky.androidide.projects.util.BootClasspathProvider
3333
import com.itsaky.androidide.utils.EditorActivityActions
3434
import com.itsaky.androidide.utils.EditorSidebarActions

core/app/src/main/java/com/itsaky/androidide/services/builder/GradleBuildService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import com.itsaky.androidide.lookup.Lookup
3434
import com.itsaky.androidide.managers.ToolsManager
3535
import com.itsaky.androidide.preferences.internal.BuildPreferences
3636
import com.itsaky.androidide.preferences.internal.DevOpsPreferences
37-
import com.itsaky.androidide.projects.ProjectManagerImpl
37+
import com.itsaky.androidide.projects.internal.ProjectManagerImpl
3838
import com.itsaky.androidide.projects.builder.BuildService
3939
import com.itsaky.androidide.resources.R
4040
import com.itsaky.androidide.services.ToolingServerNotStartedException

core/indexing-core/src/main/java/com/itsaky/androidide/indexing/core/platform/ApiVersion.kt

Lines changed: 0 additions & 122 deletions
This file was deleted.

core/lsp-models/src/main/java/com/itsaky/androidide/lsp/models/CompletionData.kt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,33 @@ interface ICompletionData
2323
/**
2424
* Information about a class-related completion item.
2525
*
26-
* @property className The fully qualified name of the class.
26+
* @property className The fully qualified name of the class. Example: `pck.outer.inner`.
27+
* @property flatName The flat name of the class. Example: `pck.outer$inner`.
28+
* @property isCompleteData Whether the data provided by this [ClassCompletionData] is complete.
2729
* @property isNested Whether the given class is a nested class or not.
2830
* @property topLevelClass If [isNested] is true, then this must be set to the fully qualified name
31+
* of the top-level class.
2932
* @property simpleName The simple name of the class.
3033
* @property nameWithoutTopLevel The name of this class without the fully qualified name of its top
3134
* level class. For example, the value of this property for class name
3235
* `com.my.pck.MyClass.Inner.InnerInner` will be `Inner.InnerInner`
3336
*/
3437
data class ClassCompletionData
3538
@JvmOverloads
36-
constructor(val className: String, val isNested: Boolean = false, val topLevelClass: String = "") :
37-
ICompletionData {
38-
val simpleName: String
39-
get() {
40-
return className.substringAfterLast(delimiter = '.')
41-
}
39+
constructor(
40+
val className: String,
41+
val isCompleteData: Boolean = false,
42+
val flatName: String = className,
43+
val simpleName: String = className.substringAfterLast(delimiter = '.'),
44+
val isNested: Boolean = false,
45+
val topLevelClass: String = ""
46+
) : ICompletionData {
4247

43-
val nameWithoutTopLevel: String
44-
get() {
45-
if (!isNested) {
46-
return className
47-
}
48-
return className.substring(topLevelClass.length + 1)
49-
}
48+
val nameWithoutTopLevel: String = if (isNested) {
49+
className.substring(topLevelClass.length + 1)
50+
} else {
51+
className
52+
}
5053
}
5154

5255
/**

core/app/src/main/java/com/itsaky/androidide/projects/ProjectManagerImpl.kt renamed to core/projects/src/main/java/com/itsaky/androidide/projects/internal/ProjectManagerImpl.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
1616
*/
1717

18-
package com.itsaky.androidide.projects
18+
package com.itsaky.androidide.projects.internal
1919

2020
import androidx.annotation.RestrictTo
2121
import com.android.builder.model.v2.models.ProjectSyncIssues
@@ -29,6 +29,9 @@ import com.itsaky.androidide.eventbus.events.file.FileEvent
2929
import com.itsaky.androidide.eventbus.events.file.FileRenameEvent
3030
import com.itsaky.androidide.eventbus.events.project.ProjectInitializedEvent
3131
import com.itsaky.androidide.lookup.Lookup
32+
import com.itsaky.androidide.projects.CachingProject
33+
import com.itsaky.androidide.projects.IProjectManager
34+
import com.itsaky.androidide.projects.R
3235
import com.itsaky.androidide.projects.api.AndroidModule
3336
import com.itsaky.androidide.projects.api.ModuleProject
3437
import com.itsaky.androidide.projects.api.Project

0 commit comments

Comments
 (0)