您的位置:首页 > 移动开发 > Android开发

Android开发学习笔记(十二) 获取系统可用内存

2013-01-04 14:16 597 查看
要获取手机的可用内存,首先要获取系统服务信息,

ActivityManager myActivityManager =(ActivityManager)getSystemService(Activity.ACTIVITY_SERVICE);

然后获得MemoryInfo类型对象

ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();

然后,使用getMemoryInfo(memoryInfo)方法获得系统可用内存,此方法将内存大小保存在memoryInfo对象上

myActivityManager.getMemoryInfo(memoryInfo) ;

然后,memoryInfo对象上的availmem值即为所求

long memSize = memoryInfo.availMem ;

字符类型转换 ,转换成MB格式。

String leftMemSize = Formatter.formatFileSize(getBaseContext(), memSize);


public static String formatFileSize (Context context,
long number)

Added in API level 3

Formats a content size to be in the form of bytes, kilobytes, megabytes, etc

Parameters
contextContext to use to load the localized units
numbersize value to be formatted
Returns

formatted string with the number

第一个参数是上下文,第二个是需要转换格式的long类型的文件大小。最终返回类似 22KB、52Bytes,22MB的字符串。

java文件 MainActivity.java

package com.xujin.availablemem;

import android.app.Activity;
import android.app.ActivityManager;
import android.os.Bundle;
import android.text.format.Formatter;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	private ActivityManager myActivityManager;
	private TextView leftMem;
	private Button refresh;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		leftMem = (TextView)findViewById(R.id.avaMem);
		refresh = (Button)findViewById(R.id.refresh);
		//获取系统服务信息
		myActivityManager =(ActivityManager)getSystemService(Activity.ACTIVITY_SERVICE);		
		upDateMemInfo();
		refresh.setOnClickListener(new OnClickListener(){
			public void onClick(View source){
				upDateMemInfo();
			}
		});
	}	

	//更新可用内存信息
    public void upDateMemInfo(){	    	
    	//获得MemoryInfo对象  
    	ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
        //获得系统可用内存,保存在MemoryInfo对象上  
        myActivityManager.getMemoryInfo(memoryInfo) ;  
        long memSize = memoryInfo.availMem ;            
        //字符类型转换 
        String leftMemSize = Formatter.formatFileSize(getBaseContext(), memSize);
        leftMem.setText(leftMemSize);
	}
}


xml文件,activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

	<LinearLayout 
    	android:layout_width="match_parent"
    	android:layout_height="wrap_content"
    	android:orientation="horizontal" >
    	<TextView
        	android:layout_width="fill_parent"
        	android:layout_height="wrap_content"
        	android:layout_weight="1"
        	android:text="当前系统可用内存为:" />
    	<TextView
        	android:layout_width="fill_parent"
        	android:layout_height="wrap_content"
       		android:layout_weight="1"
        	android:id="@+id/avaMem"/>
    </LinearLayout>
    
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="refresh"
        android:id="@+id/refresh"/>
</LinearLayout>


最终结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: