Android 獲取記憶體資訊(RAM,ROM)
阿新 • • 發佈:2019-02-13
一、RAM,ROM簡單介紹
RAM為執行記憶體,比如,360手機助手的懸浮窗,經常提示的執行記憶體超過80%之類的,指的都是執行記憶體。一般大小為幾個G。
ROM為儲存資料的記憶體,比如,愛奇藝APP在視訊頁面顯示的“總空間31.6G,剩餘28.8G”,指的是ROM。一般大小几十G,幾百G都有。ROM越大,可儲存的視訊,檔案,音樂等越多。
二、Android 獲取RAM,ROM的方法
1. 佈局:很簡單,就兩個TextView
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/textView2" android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout>
2. java程式碼中對應的方法及說明:
public class MainActivity extends Activity{ private TextView tv1; private TextView tv2; @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_memory_test); tv1 = (TextView) findViewById(R.id.textView1); tv2 = (TextView) findViewById(R.id.textView2); //獲取執行記憶體的資訊 ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); MemoryInfo info = new MemoryInfo(); manager.getMemoryInfo(info); StringBuilder sb = new StringBuilder(); sb.append("可用RAM:"); sb.append(info.availMem + "B"); sb.append(",總RAM:"); sb.append(info.totalMem + "B"); sb.append("\r\n"); sb.append(Formatter.formatFileSize(getBaseContext(), info.availMem)); sb.append(","); LogUtil.print("totalMem:" + info.totalMem); sb.append(Formatter.formatFileSize(getBaseContext(), info.totalMem)); tv1.setText(sb); sb.setLength(0); //獲取ROM記憶體資訊 //呼叫該類來獲取磁碟資訊(而getDataDirectory就是內部儲存) final StatFs statFs = new StatFs(Environment.getDataDirectory().getPath()); long totalCounts = statFs.getBlockCountLong();//總共的block數 long availableCounts = statFs.getAvailableBlocksLong() ; //獲取可用的block數 long size = statFs.getBlockSizeLong(); //每格所佔的大小,一般是4KB== long availROMSize = availableCounts * size;//可用內部儲存大小 long totalROMSize = totalCounts *size; //內部儲存總大小 sb.append("可用block數:" + availableCounts); sb.append("block總數:" + totalCounts); sb.append("\r\n"); sb.append(" 每個block大小:" + size); sb.append("\r\n"); sb.append(" 可用ROM:" + availROMSize + "B"); sb.append(" 總ROM:" + totalROMSize + "B"); tv2.setText(sb); } }
3. 效果展示