Skip to content

Commit ddacf81

Browse files
committed
Modify change some HashMap to ArrayMap to save memory
1 parent 03320b4 commit ddacf81

File tree

8 files changed

+31
-23
lines changed

8 files changed

+31
-23
lines changed

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
package com.highcapable.yukihookapi.hook.core
3131

32+
import android.util.ArrayMap
3233
import com.highcapable.yukihookapi.YukiHookAPI
3334
import com.highcapable.yukihookapi.annotation.CauseProblemsApi
3435
import com.highcapable.yukihookapi.hook.bean.HookClass
@@ -96,7 +97,7 @@ class YukiMemberHookCreator @PublishedApi internal constructor(
9697

9798
/** 设置要 Hook 的 [Method]、[Constructor] */
9899
@PublishedApi
99-
internal var preHookMembers = HashMap<String, MemberHookCreator>()
100+
internal var preHookMembers = ArrayMap<String, MemberHookCreator>()
100101

101102
/**
102103
* 更新当前 [YukiMemberHookCreator] 禁止执行 Hook 操作的条件

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
package com.highcapable.yukihookapi.hook.core
3131

3232
import android.content.res.Resources
33+
import android.util.ArrayMap
3334
import com.highcapable.yukihookapi.YukiHookAPI
3435
import com.highcapable.yukihookapi.hook.bean.HookResources
3536
import com.highcapable.yukihookapi.hook.core.api.compat.HookApiCategoryHelper
@@ -53,7 +54,7 @@ class YukiResourcesHookCreator @PublishedApi internal constructor(
5354

5455
/** 设置要 Hook 的 Resources */
5556
@PublishedApi
56-
internal var preHookResources = HashMap<String, ResourcesHookCreator>()
57+
internal var preHookResources = ArrayMap<String, ResourcesHookCreator>()
5758

5859
/**
5960
* 注入要 Hook 的 Resources

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
package com.highcapable.yukihookapi.hook.core.finder.base.rules
3232

33+
import android.util.ArrayMap
3334
import java.lang.reflect.Field
3435
import java.lang.reflect.Member
3536
import java.lang.reflect.Method
@@ -47,7 +48,7 @@ class ModifierRules private constructor(private val instance: Any) {
4748
internal companion object {
4849

4950
/** 当前实例数组 */
50-
private val instances = HashMap<Long, ModifierRules>()
51+
private val instances = ArrayMap<Long, ModifierRules>()
5152

5253
/**
5354
* 获取模板字符串数组

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/core/finder/store/ReflectsCacheStore.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
*/
2828
package com.highcapable.yukihookapi.hook.core.finder.store
2929

30+
import android.util.ArrayMap
3031
import com.highcapable.yukihookapi.YukiHookAPI
3132
import java.lang.reflect.Constructor
3233
import java.lang.reflect.Field
@@ -45,22 +46,22 @@ import java.lang.reflect.Method
4546
internal object ReflectsCacheStore {
4647

4748
/** 缓存的 [Class] 列表 */
48-
private val dexClassListData = HashMap<Int, List<String>>()
49+
private val dexClassListData = ArrayMap<Int, List<String>>()
4950

5051
/** 缓存的 [Class] 对象 */
51-
private val classData = HashMap<Int, Class<*>?>()
52+
private val classData = ArrayMap<Int, Class<*>?>()
5253

5354
/** 缓存的 [Class] 数组 */
54-
private val classesData = HashMap<Int, HashSet<Class<*>>>()
55+
private val classesData = ArrayMap<Int, HashSet<Class<*>>>()
5556

5657
/** 缓存的 [Method] 数组 */
57-
private val methodsData = HashMap<Int, HashSet<Method>>()
58+
private val methodsData = ArrayMap<Int, HashSet<Method>>()
5859

5960
/** 缓存的 [Constructor] 数组 */
60-
private val constructorsData = HashMap<Int, HashSet<Constructor<*>>>()
61+
private val constructorsData = ArrayMap<Int, HashSet<Constructor<*>>>()
6162

6263
/** 缓存的 [Field] 数组 */
63-
private val fieldsData = HashMap<Int, HashSet<Field>>()
64+
private val fieldsData = ArrayMap<Int, HashSet<Field>>()
6465

6566
/**
6667
* 查找缓存中的 [Class] 列表

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
package com.highcapable.yukihookapi.hook.param
3131

3232
import android.os.Bundle
33+
import android.util.ArrayMap
3334
import com.highcapable.yukihookapi.hook.core.YukiMemberHookCreator
3435
import com.highcapable.yukihookapi.hook.core.YukiMemberHookCreator.MemberHookCreator
3536
import com.highcapable.yukihookapi.hook.core.api.helper.YukiHookHelper
@@ -55,7 +56,7 @@ class HookParam internal constructor(
5556
internal companion object {
5657

5758
/** 每个回调方法体的数据存储实例数据 */
58-
private val dataExtras = HashMap<String, Bundle>()
59+
private val dataExtras = ArrayMap<String, Bundle>()
5960

6061
/** [HookParam] 是否已经执行首次回调事件 */
6162
internal var isCallbackCalled = false

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/bridge/YukiXposedModule.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ package com.highcapable.yukihookapi.hook.xposed.bridge
3030

3131
import android.content.pm.ApplicationInfo
3232
import android.content.res.Resources
33+
import android.util.ArrayMap
3334
import com.highcapable.yukihookapi.YukiHookAPI
3435
import com.highcapable.yukihookapi.hook.core.api.compat.HookApiCategoryHelper
3536
import com.highcapable.yukihookapi.hook.factory.hasClass
@@ -58,13 +59,13 @@ internal object YukiXposedModule : IYukiXposedModuleLifecycle {
5859
private var isInitializingZygote = false
5960

6061
/** 当前 [PackageParam] 实例数组 */
61-
private val packageParams = HashMap<String, PackageParam>()
62+
private val packageParams = ArrayMap<String, PackageParam>()
6263

6364
/** 已在 [PackageParam] 中被装载的 APP 包名 */
6465
private val loadedPackageNames = HashSet<String>()
6566

6667
/** 当前 [PackageParamWrapper] 实例数组 */
67-
private val packageParamWrappers = HashMap<String, PackageParamWrapper>()
68+
private val packageParamWrappers = ArrayMap<String, PackageParamWrapper>()
6869

6970
/** 当前 [PackageParam] 方法体回调 */
7071
internal var packageParamCallback: (PackageParam.() -> Unit)? = null

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import android.content.res.Configuration
3838
import android.content.res.Resources
3939
import android.os.Build
4040
import android.os.Handler
41+
import android.util.ArrayMap
4142
import androidx.annotation.RequiresApi
4243
import com.highcapable.yukihookapi.YukiHookAPI
4344
import com.highcapable.yukihookapi.hook.core.api.compat.HookApiProperty
@@ -79,7 +80,7 @@ internal object AppParasitics {
7980
private var isClassLoaderHooked = false
8081

8182
/** [ClassLoader] 监听回调数组 */
82-
private var classLoaderCallbacks = HashMap<Int, (Class<*>) -> Unit>()
83+
private var classLoaderCallbacks = ArrayMap<Int, (Class<*>) -> Unit>()
8384

8485
/**
8586
* 当前 Hook APP (宿主) 的全局生命周期 [Application]
@@ -435,9 +436,9 @@ internal object AppParasitics {
435436
internal var onConfigurationChangedCallback: ((Application, Configuration) -> Unit)? = null
436437

437438
/** 系统广播监听回调 */
438-
internal val onReceiverActionsCallbacks = HashMap<String, Pair<Array<out String>, (Context, Intent) -> Unit>>()
439+
internal val onReceiverActionsCallbacks = ArrayMap<String, Pair<Array<out String>, (Context, Intent) -> Unit>>()
439440

440441
/** 系统广播监听回调 */
441-
internal val onReceiverFiltersCallbacks = HashMap<String, Pair<IntentFilter, (Context, Intent) -> Unit>>()
442+
internal val onReceiverFiltersCallbacks = ArrayMap<String, Pair<IntentFilter, (Context, Intent) -> Unit>>()
442443
}
443444
}

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ package com.highcapable.yukihookapi.hook.xposed.prefs
3131

3232
import android.content.Context
3333
import android.content.SharedPreferences
34+
import android.util.ArrayMap
3435
import androidx.preference.PreferenceFragmentCompat
3536
import com.highcapable.yukihookapi.YukiHookAPI
3637
import com.highcapable.yukihookapi.hook.log.yLoggerE
@@ -65,10 +66,10 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
6566
private val isXposedEnvironment = YukiXposedModule.isXposedEnvironment
6667

6768
/** 当前缓存的 [XSharedPreferencesDelegate] 实例数组 */
68-
private val xPrefs = HashMap<String, XSharedPreferencesDelegate>()
69+
private val xPrefs = ArrayMap<String, XSharedPreferencesDelegate>()
6970

7071
/** 当前缓存的 [SharedPreferences] 实例数组 */
71-
private val sPrefs = HashMap<String, SharedPreferences>()
72+
private val sPrefs = ArrayMap<String, SharedPreferences>()
7273

7374
/**
7475
* 创建 [YukiHookPrefsBridge] 对象
@@ -122,22 +123,22 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
122123
private object XSharedPreferencesCaches {
123124

124125
/** 缓存的 [String] 键值数据 */
125-
var stringData = HashMap<String, String>()
126+
var stringData = ArrayMap<String, String>()
126127

127128
/** 缓存的 [Set]<[String]> 键值数据 */
128-
var stringSetData = HashMap<String, Set<String>>()
129+
var stringSetData = ArrayMap<String, Set<String>>()
129130

130131
/** 缓存的 [Boolean] 键值数据 */
131-
var booleanData = HashMap<String, Boolean>()
132+
var booleanData = ArrayMap<String, Boolean>()
132133

133134
/** 缓存的 [Int] 键值数据 */
134-
var intData = HashMap<String, Int>()
135+
var intData = ArrayMap<String, Int>()
135136

136137
/** 缓存的 [Long] 键值数据 */
137-
var longData = HashMap<String, Long>()
138+
var longData = ArrayMap<String, Long>()
138139

139140
/** 缓存的 [Float] 键值数据 */
140-
var floatData = HashMap<String, Float>()
141+
var floatData = ArrayMap<String, Float>()
141142

142143
/** 清除所有缓存的键值数据 */
143144
fun clear() {

0 commit comments

Comments
 (0)