6

ユーザーが戻ったときにアプリが閉じられていても、データをより速く見つけることができるように、静的データを含めることができる lrucache があります。

ただし、これには約10〜15 MBのメモリが必要なので、このようなifブランチを作成したいと思います

if(deviceOverallRAM > treshold)
      preserve static memory on app exit
else
      clear static memory on app exit

それで、おそらくいくつかの隠しAPIを介して、デバイスのRAMを取得できますか? また、しきい値の適切な値はどれでしょうか?

4

1 に答える 1

21

この pre-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;
    }
  }  

出典:この質問

ただし、 API 16 以降では、次のコードを使用して合計メモリを取得できます。

ActivityManager actManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo memInfo = new ActivityManager.MemoryInfo();
actManager.getMemoryInfo(memInfo);
long totalMemory = memInfo.totalMem;
于 2012-09-23T10:57:19.620 に答える