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

前端之家收集整理的这篇文章主要介绍了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时,您还可以加载其他行.

猜你在找的Android相关文章