系统相关
首页 > 系统相关> > android – 在WebView中捕获Flash内存不足错误?

android – 在WebView中捕获Flash内存不足错误?

作者:互联网

将某些.swf文件加载到WebView中时,在开始显示flash文件后一瞬间,我的应用程序因Signal 11故障而关闭.我无法看到任何异常. Example LogCat dump here.

将相同的.swf文件加载到股票Android浏览器中时,会显示错误图标,而不是关闭.触摸它会弹出一个弹出窗口:“Adobe Flash;内存不足”.

我的问题是:在SIGSEGV发生之前是否有任何方法可以捕获Insufficient Memory错误 – 防止任务被终止 – 正如股票浏览器所做的那样?任何帮助将不胜感激!

注意:我正在使用HTC版本的Flash插件在Android 2.2下进行测试,但似乎在其他非HTC设备上会出现同样的问题.我正在使用以下命令将swf文件直接加载到WebView中:

webView.loadUrl("http://whatever.com/bla.swf");

(启用了插件和JavaScript).它在大多数情况下都能正常工作 – 只有少数文件会导致问题.我已经尝试了各种减少内存的建议(例如清除WebView缓存)但没有成功.

解决方法:

另一种解决方案可能是使用后台任务或服务来监视设备上的内存使用情况,如果系统告诉您内存不足,则终止闪存活动.

要知道您是否处于低内存,您可以使用此代码:

ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); 
activityManager.getMemoryInfo(memoryInfo);

boolean onLowMemory = memoryInfo.lowMemory;

或者你可以使用memoryInfo.availMem检查可用内存,如果它太低(接近memoryInfo.threshold)在异常之前杀死你的活动.

标签:android,webview,flash,sigsegv
来源: https://codeday.me/bug/20191008/1872544.html