index.uts 1.1 KB
Newer Older
杜庆泉's avatar
杜庆泉 已提交
1
import { onAppTrimMemory, offAppTrimMemory ,onAppActivityDestroy} from "io.dcloud.uts.android"
2

杜庆泉's avatar
杜庆泉 已提交
3 4 5 6 7 8 9
let listeners: UTSCallback[] = []

const onAppTrimMemoryListener = (res: number) => {
    listeners.forEach(listener => {
		console.log("listener  "  + listener);
        listener(res)
    })
10 11
}

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

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