1. 程式人生 > >Android 獲取記憶體資訊(RAM,ROM)

Android 獲取記憶體資訊(RAM,ROM)

一、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. 效果展示