- 浏览: 725377 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
在android开发中,有时候我们想获取手机的一些硬件信息,比如android手机的总内存和可用内存大小。这个该如何实现呢?
通过读取文件"/proc/meminfo"的信息能够获取手机Memory的总量,而通过ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo)方法可以获取当前的可用Memory量。
"/proc/meminfo"文件记录了android手机的一些内存信息,在命令行窗口里输入"adb
shell",进入shell环境,输入"cat
/proc/meminfo"即可在命令行里显示meminfo文件的内容,具体如下所示。
C:\Users\Figo>adb
shell
# cat /proc/meminfo
cat /proc/meminfo
MemTotal: 94096
kB
MemFree: 1684 kB
Buffers: 16
kB
Cached: 27160 kB
SwapCached: 0
kB
Active: 35392 kB
Inactive: 44180
kB
Active(anon): 26540 kB
Inactive(anon): 28244
kB
Active(file): 8852 kB
Inactive(file): 15936
kB
Unevictable: 280 kB
Mlocked: 0
kB
SwapTotal: 0 kB
SwapFree: 0
kB
Dirty: 0 kB
Writeback: 0
kB
AnonPages: 52688 kB
Mapped: 17960
kB
Slab: 3816 kB
SReclaimable: 936
kB
SUnreclaim: 2880 kB
PageTables: 5260
kB
NFS_Unstable: 0 kB
Bounce: 0
kB
WritebackTmp: 0 kB
CommitLimit: 47048
kB
Committed_AS: 1483784 kB
VmallocTotal: 876544
kB
VmallocUsed: 15456 kB
VmallocChunk: 829444 kB
#
下面先对"/proc/meminfo"文件里列出的字段进行粗略解释:
MemTotal: 所有可用RAM大小。
MemFree: LowFree与HighFree的总和,被系统留着未使用的内存。
Buffers: 用来给文件做缓冲大小。
Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于diskcache minus SwapCache)。
SwapCached:被高速缓冲存储器(cache memory)用的交换空间的大小。已经被交换出来的内存,仍然被存放在swapfile中,用来在需要的时候很快的被替换而不需要再次打开I/O端口。
Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要,否则不会被移作他用。
Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径。
SwapTotal: 交换空间的总大小。
SwapFree: 未被使用交换空间的大小。
Dirty: 等待被写回到磁盘的内存大小。
Writeback: 正在被写回到磁盘的内存大小。
AnonPages:未映射页的内存大小。
Mapped: 设备和文件等映射的大小。
Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。
SReclaimable:可收回Slab的大小。
SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)。
PageTables:管理内存分页页面的索引表的大小。
NFS_Unstable:不稳定页表的大小。
要获取android手机总内存大小,只需读取"/proc/meminfo"文件的第1行,并进行简单的字符串处理即可。
===========================================================================
下面直接给出详细步骤,大家可以根据实际情况进行相应扩展。
1.新建项目,修改main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:id="@+id/system_memory" />
</LinearLayout>
2.完善ReadSystemMemory.java类
import android.app.Activity;
import android.os.Bundle;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.content.Context;
import android.text.format.Formatter;
import android.util.Log;
import android.widget.TextView;
public class ReadSystemMemory extends Activity {
TextView tv = null;
private String getAvailMemory() {// 获取android当前可用内存大小
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
//mi.availMem; 当前系统的可用内存
return Formatter.formatFileSize(getBaseContext(), mi.availMem);// 将获取的内存大小规格化
}
private String 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");
}
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte
localBufferedReader.close();
} catch (IOException e) {
}
return Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte转换为KB或者MB,内存大小规格化
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.system_memory);
tv.setText("手机总内存: " + this.getTotalMemory() + ", " + "可用内存: "
+ this.getAvailMemory());
}
}
3.运行结果
大功告成,顺利读取android手机的总内存和当前的可用内存。这里只是抛砖引玉,大家可以举一反三,进行扩展。当然我们还可以通过读取"/proc/cupinfo"来获取android手机的CPU参数,通过读取"/proc/stat"文件来计算CPU的使用率,这里不再赘述。
发表评论
-
Android生成签名文件并用其对apk文件进行签名(Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]错误完美解决)
2013-09-11 15:09 9655最近编程时遇到问题:写了一个android小程序,打包后用 ... -
Android 引用外部项目库
2013-02-05 16:36 2880项目中要集成其他项目由于集成项目庞大不想机械的copy,就想 ... -
Android网络连接判断与处理
2013-01-29 16:33 22086获取网络信息需要在AndroidManifest.xml文 ... -
Android有用代码片段2
2013-01-22 19:51 1990记得2011年的时候,整理了android有用代码片段这篇文 ... -
android有用代码片段
2013-01-22 19:48 2831有时候,需要一些小的功能,找到以后,就把它贴到了博客下面, ... -
Android 使用draw9patch技术实现不失真背景
2012-09-23 16:27 3561做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了 ... -
Android解析Json(Google Gson)
2012-09-21 09:43 3835什么是JSON? 1.JSON:Javascript ... -
Android第三方包组件实现总结
2012-09-03 15:35 2060前沿: 在android开发过程中,往往会需要创建组件 ... -
Android中attr自定义属性详解
2012-07-19 10:17 1414首先在你需要使用自定义属性的布局文件中定义标签,当 ... -
Android 读取<meta-data>元素的数据
2012-06-21 13:31 1227在AndroidManifest.xml ... -
获取AndroidManifest里的信息
2012-06-21 12:09 955看附件 -
Java基础之软引用、弱引用、虚引用
2012-06-18 10:02 11131、概述 在JDK1.2以前 ... -
Android播放声音MediaPlayer类详细介绍
2012-06-06 13:13 11890MediaPlayer ... -
Android 画图之抗锯齿
2012-05-30 18:00 1944在画图的时候,图片如果旋转或缩放之 ... -
Android 画布绘图
2012-05-30 17:58 31864我们已经介绍了Canvas,在 ... -
Android中LayoutInflater的使用
2012-05-28 12:15 33524Inflater英文意思是膨胀,在Android中应该是扩展的 ... -
Android Matrix理论与应用详解,附三角函数公式
2012-03-19 15:13 4984Matrix学习——基础知识 以前在线性代数中学习了矩阵,对 ... -
Android 实现从网络上异步加载图像
2012-03-17 15:44 1125研究了android从网络上异步加载图像,现总结如下: (1 ... -
Activity中ConfigChanges属性配置描述
2012-02-08 23:01 2051通过设置这个属性可以使Activity捕捉设备状态变化,以下是 ... -
Android代码混淆
2011-12-26 18:23 3277一个xxx.apk提交给测试、 ok,去倒杯水,看看网页 ...
相关推荐
Android 获取手机总内存和可用内存信息,博客附adb方式 https://blog.csdn.net/qq_31939617/article/details/80272759
Android开发获取手机总内存和可用内存定义.pdf
主要介绍了Android系统检测程序内存占用各种方法,并对内存信息的详细介绍,需要的朋友可以参考下
Unity调用Android查看内存信息,在android上面运行时候可查看fps,系统内存大小,系统可用内存大小,当前App占用内存
Android获取储存信息以及内存信息可以用adb命令查看。 adb查看系统内存信息以及储存信息: 命令:adb shell cat /proc/meminfo 代码: private static final String FILENAME_PROC_MEMINFO = /proc/meminfo; /*...
Unity调用Android查看当前app占用内存信息,系统可用内存大小及系统内存大小,FPS的显示,帮助对游戏进行性能优化
可以获取系统的内存和可用内存,cpu的实时使用率
Due to undocumented changes made by Google, on Android 7.0 CPU usage information for processes others than the own AnotherMonitor one will not be available (not even with root access). Rest of the app...
android可用内存的阀值教程,让你更了解android的内存管理参照.pdf
下面小编就为大家带来一篇android 获取手机内存及SD卡内存可用空间的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本篇文章主要介绍了Android获取App内存使用情况的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本篇文章对用Android获取系统cpu信息,内存,版本,电量等信息的方法进行了详细的分析介绍。需要的朋友参考下
主要介绍了Android实现获取SD卡总容量,可用大小,机身内存总容量及可用大小的方法,涉及Android针对SD卡操作的常见技巧,具有一定参考借鉴价值,需要的朋友可以参考下
SDCard存储卡在 Android 手机上是可以随时插拔的,每次的动作都会引起Android系统ACTION_BROADCAST,本例子将计算出 SDCard 的剩余容量和总容量。供测试的sd卡中存了两首歌和一个30M的文件,现在检测剩余的空间正好...
获取可用内存大小 获取系统版本 安装客户端 获取FilesDir目录 获取SD卡路径 获取缓存目录 获取APP版本号 获取当前网络类型 是否是wifi连接状态 获取当前网络状态信息 获取wifi热点 获取屏幕宽度(分辨率PX) 获取屏幕...
内部存储空间获取总大小和可用大小; sdcard存储空间获取总大小和可用大小; 新名词记录{StatFs:描述文件系统信息的类} 概览 在开发中,我们或多或少都会用到存储空间进行存储数据。移动设备上可以有两种的存储方式...
本文实例讲述了Android编程实现获得内存剩余大小与总大小的方法。分享给大家供大家参考,具体如下: public class memInfo { // 获得可用的内存 public static long getmem_UNUSED(Context mContext) { long MEM...