下面为查看可用存储内存大小的示例,用于查看和内部和外部存储器的总存储。
import java.io.File;
import android.os.Environment;
import android.os.StatFs;
public class MemoryStatus {
static final int ERROR = -1;
static public boolean externalMemoryAvailable() {
return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
static public long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
static public long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
static public long getAvailableExternalMemorySize() {
if(externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
} else {
return ERROR;
}
}
static public long getTotalExternalMemorySize() {
if(externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
} else {
return ERROR;
}
}
static public String formatSize(long size) {
String suffix = null;
if (size >= 1024) {
suffix = "KiB";
size /= 1024;
if (size >= 1024) {
suffix = "MiB";
size /= 1024;
}
}
StringBuilder resultBuffer = new StringBuilder(Long.toString(size));
int commaOffset = resultBuffer.length() - 3;
while (commaOffset > 0) {
resultBuffer.insert(commaOffset, ',');
commaOffset -= 3;
}
if (suffix != null)
resultBuffer.append(suffix);
return resultBuffer.toString();
}
}
来个更简单的
private void update() {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long availableBlocks = stat.getAvailableBlocks();
mTotalSize.setText(formatSize(totalBlocks * blockSize));
mUsedSize.setText(formatSize((totalBlocks - availableBlocks) * blockSize));
mAvailableSize.setText(formatSize(availableBlocks * blockSize));
}
private String formatSize(long size) {
return Formatter.formatFileSize(this, size);
}
分享到:
相关推荐
在Android平台上,存储容量的管理是一项关键任务,尤其是在设备内存有限的情况下。本示例主要关注如何在H6平台上实现Flash存储容量的翻倍,而这一技术同样适用于其他平台,尽管可能需要进行相应的验证。让我们深入...
本文将深入探讨如何利用Unity调用Android原生API来查看内存信息,包括FPS(帧率)、系统总内存、系统可用内存以及Unity应用自身所占用的内存。这对于监控和优化游戏性能至关重要。 首先,我们关注的是"Unity调用...
Android 原生系统一般默认16M,但是国内手机一般都是特殊定制的,都有修改系统的内存大小,所有有时候,要查看具体应用系统分配的内存大小,还是需要实际去测试的, 测试方法如下: 方式一: ActivityManager ...
Android获取储存信息以及内存信息可以用adb命令查看。 adb查看系统内存信息以及储存信息: 命令:adb shell cat /proc/meminfo 代码: private static final String FILENAME_PROC_MEMINFO = /proc/meminfo; /*...
在Android平台上,获取手机内存大小是一项常见的需求,无论是为了优化应用程序性能、监控设备资源使用情况,还是为了提供用户关于设备状态的信息。以下是一份详细的指南,涵盖了如何在Android中获取内存信息。 首先...
在Android系统中,读取外置和内置存储卡的路径以及获取它们的大小是常见的需求,尤其是在处理多媒体文件或者管理应用程序数据时。本教程将详细解释如何实现这一功能。 首先,我们要了解Android对存储卡的分类。在...
为了使系统显示2GB的DDR容量,开发者可能在这部分代码中进行了修改,例如,可能人为地将总内存容量翻倍,或者修改了与内存大小相关的变量。 同时,`ddr.h`可能是内核中的一个头文件,包含了DDR内存的相关定义和...
本文将详细介绍如何在Android平台上获取手机内存的总大小以及可用空间。 首先,Android系统提供了一个名为`StatFs`的类,该类用于获取文件系统的统计信息,包括总块数、自由块数以及可分配块数等。这些信息可以帮助...
总结一下,本篇内容涵盖了Android获取SD卡内存空间的基本方法,包括获取存储状态、总空间、可用空间和已用空间,以及如何处理不同的Android版本和权限问题。这些知识对于任何涉及存储管理的Android应用都是必不可少...
1. **图片资源占用大**:高分辨率图片文件大小通常较大,如果一次性加载所有图片到内存,即使是在高端设备上也可能耗尽可用内存。 2. **网络请求频繁**:如果图片资源存储在网络服务器上,每次切换图片都需要重新...
内存泄漏是指程序在运行过程中未正确释放不再使用的内存资源,导致可用内存逐渐减少的现象。在Java中,常见的内存泄漏类型包括但不限于: - **对象不再使用但仍然被引用**:例如,将一个对象添加到集合中后忘记移除...
总的来说,统计SDCard的内存大小是Android开发中的常见任务,涉及到对文件系统的操作和对Android系统API的理解。通过正确的方法,我们可以轻松获取并管理设备的存储信息,为用户提供更好的存储管理体验。
本文将详细介绍如何在Android平台上查询手机的硬件内存大小以及CPU的核心数等关键信息。 首先,我们要明白内存(Memory)通常指的是RAM(Random Access Memory),它是设备运行应用程序时临时存储数据的地方。而CPU...
在Android应用开发中,了解如何获取手机内部存储和SD卡(外部存储)的可用空间是非常重要的。这不仅可以帮助开发者确保应用程序能正常运行,避免因存储空间不足导致的问题,还可以优化用户体验,合理分配资源。以下...
这些信息表明,垃圾收集器释放了7KB的内存,堆内存剩余18%,总大小为13511KB,外部内存使用1632KB,总大小为1672KB,整个GC过程暂停了89毫秒。 因此,Android开发者必须密切关注内存管理,通过合理使用convertView...
本文将详细解析如何通过编写工具类来获取SD卡(外部存储)和手机内存(内部存储)的大小信息。我们将分析提供的`SDCardUtil`类,并解释其中的关键代码和相关API。 首先,`SDCardUtil`类包含两个静态方法:`...
在Android开发过程中,有时我们需要通过命令行来启动Android模拟器,并对其进行特定的配置,比如调整内存大小。这对于自动化测试或批量操作来说非常有用。本文将详细介绍如何使用命令行启动Android模拟器并设置其...
Android内存分为堆内存和栈内存,Java对象主要存储在堆中,而局部变量和方法信息存储在栈中。内存溢出通常发生在堆内存,当分配给应用的堆内存不足以创建新的对象时,就会发生溢出。 1. **对象生命周期与引用管理**...
- **Memtotal**:表示系统总物理内存大小。 - **Free**:当前未被任何进程使用的内存。 - **Cached**:由内核用于缓存的内存,这部分内存并不占用应用的可用内存,当有进程需要更多内存时,内核会立即释放这些缓存。...
- 使用缓存时,如果没有设置合适的过期策略或限制大小,也可能导致内存泄漏。 #### 五、垃圾回收机制 垃圾回收(GC)是一种自动管理内存的技术,它可以定期清理不再被引用的对象。GC通过追踪根对象(root objects)来...