当可用内存很高时,应用程序经常收到 ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL。以下是这个 ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL 发生时内存情况的快照:
Available memory (MB): 3041
Total memory (MB): 3926
以上数字得到如下:
ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager) activity.getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
lAvailableMemoryMB = mi.availMem / 0x100000L;
lTotalMemoryMB = mi.totalMem / 0x100000L;
我知道官方文档警告 availMem:“这个数字不应该被认为是绝对的:由于内核的性质,这个内存的很大一部分实际上正在使用并且需要整个系统运行良好”。但是,当 TRIM_MEMORY_RUNNING_CRITICAL 发生时,可用内存超过 3GB。任何人都可以对此有所了解吗?