index.uts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { UTSAndroid } from "io.dcloud.uts"
  2. let listeners: UTSCallback[] = []
  3. const onAppTrimMemoryListener = (ret: number) => {
  4. listeners.forEach(listener => {
  5. let res = {
  6. level:ret
  7. }
  8. listener(res)
  9. })
  10. }
  11. @Suppress("DEPRECATION")
  12. export function onMemoryWarning(callback: UTSCallback) {
  13. if (listeners.length == 0) {
  14. // 仅首次执行底层的实际监听
  15. UTSAndroid.onAppTrimMemory(onAppTrimMemoryListener)
  16. UTSAndroid.onAppActivityDestroy(()=>{
  17. // listeners 默认是静态常量周期,activity 销毁时,需要手动清空
  18. listeners = []
  19. })
  20. }
  21. listeners.push(callback)
  22. }
  23. @Suppress("DEPRECATION")
  24. export function offMemoryWarning(callback: UTSCallback | null) {
  25. if(callback == null){
  26. // 清除全部回调
  27. listeners = []
  28. UTSAndroid.offAppTrimMemory(null);
  29. return
  30. }
  31. // 清除指定回调
  32. const index = listeners.indexOf(callback)
  33. if (index > -1) {
  34. listeners.splice(index, 1)
  35. }
  36. if (listeners.length == 0) {
  37. // 当用户不再监听时,移除底层实际监听
  38. UTSAndroid.offAppTrimMemory(onAppTrimMemoryListener)
  39. }
  40. }