微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – ‘捕捉’OutOfMemoryError完全解决了内存不足的问题?

我在LogCat中收到OutOfMemoryError消息,我的应用程序崩溃,因为错误未被捕获.
造成OutOfMemoryError的两件事:
1.将大文本文件读入字符串.
2.将该字符串发送到我的TextView.
简单地为这两件事添加一个catch不仅可以捕获OutOfMemoryError,而且可以完全解决内存不足的问题.
LogCat中没有更多崩溃,也没有更多错误消息.该应用程序运行完美.
这怎么可能?究竟发生了什么?

使用此代码,我收到错误消息&应用程序崩溃:

try
{
myString = new Scanner(new File(myFilePath)).useDelimiter("\\A").next();
} 
catch (FileNotFoundException e) 
{
e.printstacktrace();
}


myTextView.setText(myString);

只是通过“捕获”OutOfMemoryError,LogCat中没有更多的错误消息而且没有崩溃:

try
{
myString = new Scanner(new File(myFilePath)).useDelimiter("\\A").next();
} 
catch (FileNotFoundException e) 
{
e.printstacktrace();
}
catch(OutOfMemoryError e)
{
}


try 
{
myTextView.setText(myString);
} 
catch(OutOfMemoryError e)
{
}
最佳答案
我猜你的字符串没有完全加载,或者即使它是(它可能在添加文本之后抛出错误),会发生什么取决于你的应用程序可用的当前内存,因此捕获OutOfMemoryError在这里不是一个可行的解决方案.

如果你真的想加载一个大的字符串文件并在EditText中显示它,我建议你只加载文件的一小部分(比方说50kB),并实现某种分页,就像一个加载下一个50kB的按钮.当用户滚动EditText时,您还可以加载其他行.

原文地址:https://www.jb51.cc/android/430891.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐