在Android中处理完整磁盘存储

时间:2011-06-03 19:48:33

标签: android sqlite exception exception-handling storage

这个问题从最初的问题发展而来,这里有一个简短的信息:

我填充了模拟器上的磁盘存储并且它完全没用 - 进程android.process.acore在循环中显示“...已意外停止”对话框,因此系统上无法完成任何操作。我甚至无法使用右侧的电源按钮将其关闭(现在尝试断电10分钟,logcat充满异常)。伟大的它是一个模拟器,我想知道如果它是我的真实设备会发生什么..

也许有人可以详细说明这种行为的原因 - 它应该是这样的吗?

这是最初的问题,请参阅我的编辑:

我很好奇处理随机情况,例如Android设备上的磁盘存储空间不足。

我查看了developer.android.com上的示例,我发现他们甚至懒得去做异常处理。

我可以看到,当谈到SQLite类时,有一些例外,例如SQLiteOutOfMemoryException,但我无法在何时以及如何处理这些场景时找到任何信息。

有没有人有以下经验:

  • 为这种前卫的情况发布应用程序
  • 在模拟器上测试此功能的方法
  • 来自沮丧用户的反馈(可能听说过对示例应用程序甚至核心应用程序的任何挫折......?)

提前感谢您的时间。

[修改

我也在Android问题跟踪器上遇到了这个问题:

http://code.google.com/p/android/issues/detail?id=1653

这有点神秘......而且自2008年以来它似乎是一个幽灵。

[ EDIT2

Alrite,根据评论的建议:我刚刚使用以下方法进行了测试:

dd if=/dev/urandom of=file

选择参数bs和count以适合剩余空间,

并填充/ data分区。

我很惊讶Google地图刚刚在SQLiteFullException上崩溃了。实际上所有应用程序都崩溃了 - 甚至是电话。

没有人处理这些例外是真的吗?这些应用程序是否可以被“......意外停止”而被杀死?

2 个答案:

答案 0 :(得分:1)

我处理这个问题的方法是围绕所有文件操作进行错误处理,以便应用程序不会崩溃,并且我在用户使用的目录上执行文件统计(https://stackoverflow.com/a/5083482/1317564)以确保存在足够的自由空间。如果没有,我向他们展示一个很好的大错误消息。 ;)一般来说,手机本身也会有很多抱怨,所以他们迟早会注意到这个问题。

答案 1 :(得分:-1)

这是错误,“手机存储已满!删除一些文件以释放空间。”我至少有7场自由空间。 手机的内存已满。不是你的记忆卡。它们完全是分开的。

尝试卸载一些您不再需要的应用。并尝试清除某些应用上的缓存。