我有一个可以包含静态数据的lrucache,因此即使我的应用程序在用户返回时关闭,他也可以更快地找到数据.
但是这需要大约10-15 MB的内存,因此我想制作一个像这样的if分支
if(deviceOverallRAM > treshold)
preserve static memory on app exit
else
clear static memory on app exit
Run Code Online (Sandbox Code Playgroud)
那么,我可以通过一些隐藏的API来获取设备的内存吗?什么是门槛的好价值?
Leo*_*die 21
要在API 16之前执行此操作,您必须阅读android内核的proc/meminfo文件:
public long getTotalMemory() {
String str1 = "/proc/meminfo";
String str2;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192);
str2 = localBufferedReader.readLine();//meminfo
arrayOfString = str2.split("\\s+");
for (String num : arrayOfString) {
Log.i(str2, num + "\t");
}
//total Memory
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;
localBufferedReader.close();
return initial_memory;
}
catch (IOException e)
{
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
来源:这个问题
但是,在API 16及更高版本中,您可以使用以下代码来检索总内存:
ActivityManager actManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo memInfo = new ActivityManager.MemoryInfo();
actManager.getMemoryInfo(memInfo);
long totalMemory = memInfo.totalMem;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7400 次 |
| 最近记录: |