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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...