index.uts 1.1 KB
Newer Older
1
import { UTSAndroid } from "io.dcloud.uts"
2

3
let listeners: UTSCallback[] = []
杜庆泉's avatar
杜庆泉 已提交
4

5 6 7 8
const onAppTrimMemoryListener = (res: number) => {
    listeners.forEach(listener => {
        listener(res)
    })
9 10
}

11 12

@Suppress("DEPRECATION")
13 14
export function onMemoryWarning(callback: (res: number) => void) {
    if (listeners.length == 0) {
杜庆泉's avatar
杜庆泉 已提交
15
		// 仅首次执行底层的实际监听
16 17
        UTSAndroid.onAppTrimMemory(onAppTrimMemoryListener)
		UTSAndroid.onAppActivityDestroy(()=>{
杜庆泉's avatar
杜庆泉 已提交
18 19 20
			// listeners 默认是静态常量周期,activity 销毁时,需要手动清空
			listeners = []
		})
21 22
    }
    listeners.push(callback)
杜庆泉's avatar
杜庆泉 已提交
23
}
24

25
@Suppress("DEPRECATION")
26 27 28
export function offMemoryWarning(callback: UTSCallback | null = null) {
	
	if(callback == null){
杜庆泉's avatar
杜庆泉 已提交
29 30
		// 清除全部回调
		listeners = []
31
		UTSAndroid.offAppTrimMemory(null);
杜庆泉's avatar
杜庆泉 已提交
32
		return
33
	}
34
	
杜庆泉's avatar
杜庆泉 已提交
35
	// 清除指定回调
36 37 38 39 40 41 42 43
    const index = listeners.indexOf(callback)
    if (index > -1) {
        listeners.splice(index, 1)
    }
    if (listeners.length == 0) {
        // 当用户不再监听时,移除底层实际监听
        UTSAndroid.offAppTrimMemory(onAppTrimMemoryListener)
    }
44
}