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

来源:互联网 发布:政治体制改革 知乎 编辑:程序博客网 时间:2024/05/16 07:04
要获取手机的可用内存,首先要获取系统服务信息,

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 unitsnumbersize 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;@Overridepublic 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>

最终结果:



原创粉丝点击