如何解决获取iOS内部存储内存信息Xamarin Forms iOS
我无法从iPhone设备获得实际的可用存储空间。我正在使用this link来获取xamarin表格ios中的存储空间。以下是我的链接中的代码。
public double GetRemainingInternalMemoryStorage()
{
NSFileSystemAttributes applicationFolder = NSFileManager.DefaultManager.GetFileSystemAttributes(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
var freeSpace = applicationFolder.FreeSize;
var totalSpace = applicationFolder.Size;
Console.WriteLine("totalSpace " + freeSpace);
return freeSpace;
}
我正在研究该功能,如果存储空间小于阈值,我需要向用户显示警报。我无法获得准确的存储空间,因此我的功能无法正常工作。
我的设备总共有32 GB的存储内存,但是当我使用上面的代码检查时,它看到31989469184字节,接近31.98 GB(31989469184/1000/1000/1000)看起来可以纠正,但是类似地,设备的可用空间为14.2 GB,并使用上述代码,它看到了12259602432字节,接近12.25 GB。我不确定为什么会少提供2 GB。
上面链接的android代码效果很好。如何在iOS中计算准确的可用空间?
解决方法
如上所述,iOS在缓存中保留了一些内存,我填满了设备的全部内存,因此设备中仅剩300 MB可用空间。那时我得到了准确的状态。因此,我建议如果有人在问题区域提及功能,请尝试填充完整的ios设备,然后进行测试。以下是我针对这两个平台的最终代码。
Android代码
public double GetRemainingInternalMemoryStorage()
{
//Using StatFS
var path = new StatFs(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData));
long blockSize = path.BlockSizeLong;
long avaliableBlocks = path.AvailableBlocksLong;
double freeSpace = blockSize * avaliableBlocks;
freeSpace = Math.Round(freeSpace / (1024 * 1024),1); // Converting freespace to mb. Android follows binary pattern,so divide by 1024.
return freeSpace;
}
iOS代码
public double GetRemainingInternalMemoryStorage()
{
NSFileSystemAttributes applicationFolder = NSFileManager.DefaultManager.GetFileSystemAttributes(Environment.GetFolderPath(Environment.SpecialFolder.Personal));
double freeSpace = applicationFolder.FreeSize;
freeSpace = Math.Round(freeSpace / (1000 * 1000),1); // Converting freespace to mb. iOS follows decimal pattern,so divide by 1000
return freeSpace;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。