quick-cocos UIInput字数过多崩溃问题

quick-cocos UIInput字数过多崩溃问题,第1张

概述问题 最近做了一个很简单的需求,就是一个输入框,结果测试人员测试的时候,直接复制粘贴了一大波文字,然后程序就崩溃了,但是就是Android平台的崩溃了,iOS的没有问题。抓日志看了,发现是Java层报错了。本来想在输入的时候做一下监听,发现怎么做都是不行的 定位 根据报错的堆栈,一路跟踪,报错的地方是在这里类Cocos2dxBitmap的getPixels中 final byte[] pixels 问题

最近做了一个很简单的需求,就是一个输入框,结果测试人员测试的时候,直接复制粘贴了一大波文字,然后程序就崩溃了,但是就是AndroID平台的崩溃了,iOS的没有问题。抓日志看了,发现是Java层报错了。本来想在输入的时候做一下监听,发现怎么做都是不行的

定位

根据报错的堆栈,一路跟踪,报错的地方是在这里类Cocos2dxBitmap的getPixels中

final byte[] pixels = new byte[bitmap.getWIDth()                    * bitmap.getHeight() * 4];

需要的内存过多,导致的OOM,然后继续分析了一下bitmap.getWIDth()和bitmap.getHeight()是怎么获取的

private static class TextProperty {        /** The max wIDth of lines. */        private final int mMaxWIDth;        /** The height of all lines. */        private final int mTotalHeight;        private final int mHeightPerline;        private final String[] mlines;        TextProperty(final int maxWIDth,final int heightPerline,final String[] lines) {            this.mMaxWIDth = maxWIDth;            this.mHeightPerline = heightPerline;            this.mTotalHeight = heightPerline * lines.length;            this.mlines = lines;        }    }

可以看到bitmap.getHeight()是每行文字的高乘以总行数,所以当文字很多的时候需要的内存肯定很多的,所以只能找个方法限制一下字数

解决办法

在createTextBitmapShadowstroke方法中对string进行一下截取

if(string.length()>MAX_LENGTH){     string = string.substring(0,MAX_LENGTH) }
总结

以上是内存溢出为你收集整理的quick-cocos UIInput字数过多崩溃问题全部内容,希望文章能够帮你解决quick-cocos UIInput字数过多崩溃问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1082664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存