- 浏览: 733007 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
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 9714最近编程时遇到问题:写了一个android小程序,打包后用 ... -
Android 引用外部项目库
2013-02-05 16:36 2920项目中要集成其他项目由于集成项目庞大不想机械的copy,就想 ... -
Android网络连接判断与处理
2013-01-29 16:33 22170获取网络信息需要在AndroidManifest.xml文 ... -
Android有用代码片段2
2013-01-22 19:51 2077记得2011年的时候,整理了android有用代码片段这篇文 ... -
android有用代码片段
2013-01-22 19:48 2872有时候,需要一些小的功能,找到以后,就把它贴到了博客下面, ... -
Android 使用draw9patch技术实现不失真背景
2012-09-23 16:27 3607做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了 ... -
Android解析Json(Google Gson)
2012-09-21 09:43 3877什么是JSON? 1.JSON:Javascript ... -
Android第三方包组件实现总结
2012-09-03 15:35 2119前沿: 在android开发过程中,往往会需要创建组件 ... -
Android中attr自定义属性详解
2012-07-19 10:17 1464首先在你需要使用自定义属性的布局文件中定义标签,当 ... -
Android 读取<meta-data>元素的数据
2012-06-21 13:31 1272在AndroidManifest.xml ... -
获取AndroidManifest里的信息
2012-06-21 12:09 993看附件 -
Java基础之软引用、弱引用、虚引用
2012-06-18 10:02 11581、概述 在JDK1.2以前 ... -
Android播放声音MediaPlayer类详细介绍
2012-06-06 13:13 11933MediaPlayer ... -
Android 画图之抗锯齿
2012-05-30 18:00 1977在画图的时候,图片如果旋转或缩放之 ... -
Android 画布绘图
2012-05-30 17:58 31958我们已经介绍了Canvas,在 ... -
Android中LayoutInflater的使用
2012-05-28 12:15 33589Inflater英文意思是膨胀,在Android中应该是扩展的 ... -
Android Matrix理论与应用详解,附三角函数公式
2012-03-19 15:13 5073Matrix学习——基础知识 以前在线性代数中学习了矩阵,对 ... -
Android 实现从网络上异步加载图像
2012-03-17 15:44 1164研究了android从网络上异步加载图像,现总结如下: (1 ... -
Activity中ConfigChanges属性配置描述
2012-02-08 23:01 2119通过设置这个属性可以使Activity捕捉设备状态变化,以下是 ... -
Android代码混淆
2011-12-26 18:23 3318一个xxx.apk提交给测试、 ok,去倒杯水,看看网页 ...
相关推荐
在Android系统中,获取手机的总内存和可用内存信息是开发者和普通用户都可能需要的操作。这涉及到系统层面的信息查询,通常需要通过编程接口(API)或者使用Android Debug Bridge(ADB)工具来实现。以下是对这个...
### Android开发中获取手机总内存和可用内存的方法 在Android应用开发过程中,有时我们需要了解设备的硬件信息,例如手机的总内存(RAM)以及当前可用的内存大小。这对于优化应用程序性能、合理分配资源等方面有着...
在 Android 开发中,有时候我们想获取手机的一些硬件信息,比如 android 手机的总内存和可用内存大小。下面我们将详细介绍如何获取手机内存信息。 获取手机总内存大小 要获取 android 手机总内存大小,可以通过...
`ActivityManager.MemoryInfo`类提供了关于设备内存的详细信息,包括总内存、可用内存、低内存状态等。通过`ActivityManager.getMemoryInfo()`获取这些数据。此外,还可以通过`/proc/meminfo`文件来获取更底层的内存...
在Android里,程序内存被分为2部分:native和dalvik,dalvik就是我们普通的Java使用内存,分析堆栈的时候使用的内存。我们创建的对象是在这里面分配的,对于内存的限制是 native+dalvik 不能超过最大限制. Android ...
在本篇文章中,我们将深入探讨如何利用`ActivityManager`获取内存信息和进程信息。 首先,我们来看如何获取系统内存信息。Android提供了一个名为`ActivityManager.RunningAppProcessInfo`的类,其中包含了关于当前...
总的来说,Android提供了丰富的API来获取和管理内存信息。开发者需要根据实际需求选择合适的方法,合理地利用这些信息,优化应用性能,提高用户体验。通过持续学习和实践,我们可以更好地理解和掌握Android内存管理...
本文将深入探讨如何利用Unity调用Android原生API来查看内存信息,包括FPS(帧率)、系统总内存、系统可用内存以及Unity应用自身所占用的内存。这对于监控和优化游戏性能至关重要。 首先,我们关注的是"Unity调用...
在android开发中,有时候我们想获取手机的一些硬件信息,比如android手机的总内存和可用内存大小。 这个该如何实现呢? 通过读取文件“/proc/meminfo”的信息能够获取手机Memory的总量,而通过ActivityManager.get...
Android 操作系统提供了多种方式来获取手机信息,包括获取安装的应用信息、手机可用内存和总内存、手机 CPU 信息等。在本文中,我们将详细介绍如何使用 Java 代码来获取这些信息。 获取安装的应用信息 在 Android...
首先,Android系统提供了一个名为`StatFs`的类,该类用于获取文件系统的统计信息,包括总块数、自由块数以及可分配块数等。这些信息可以帮助我们计算出内存的使用情况。 1. **获取手机内存可用大小** 在Android中...
Android获取储存信息以及内存信息可以用adb命令查看。 adb查看系统内存信息以及储存信息: 命令:adb shell cat /proc/meminfo 代码: private static final String FILENAME_PROC_MEMINFO = /proc/meminfo; /*...
这个类会包含调用Android系统API的方法,用于获取内存信息和FPS。 ```java // ShowAppBaseInfo.java package com.example.showappbaseinfo; import android.app.Activity; import android.os.Debug; import ...
内存则分为总内存和可用内存,总内存是设备物理内存的总量,而可用内存则是当前系统可分配给应用使用的内存。 在Android中,获取CPU使用率通常需要读取 `/proc/stat` 文件,该文件包含了系统运行的各种统计信息。...
在Android系统中,获取手机内存信息是开发过程中的一项常见任务,这有助于监控设备性能或优化应用程序资源使用。本文将深入探讨如何在Android中获取并显示内存信息,主要围绕以下几个方面展开: 1. **Android内存...
该类提供了关于系统内存状态的各种属性,例如总内存、可用内存等。我们可以通过`ActivityManager`服务获取这些信息: ```java ActivityManager activityManager = (ActivityManager) context.getSystemService...
在Android系统中,获取应用程序的内存信息是进行性能分析、优化和故障排查的重要步骤。针对Android 7.1,这个"android 7.1 获取各个应用的各种内存信息的app demo"是一个示例项目,旨在教开发者如何在不依赖外部开源...
总结一下,本篇内容涵盖了Android获取SD卡内存空间的基本方法,包括获取存储状态、总空间、可用空间和已用空间,以及如何处理不同的Android版本和权限问题。这些知识对于任何涉及存储管理的Android应用都是必不可少...