最近做了一个很简单的需求,就是一个输入框,结果测试人员测试的时候,直接复制粘贴了一大波文字,然后程序就崩溃了,但是就是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字数过多崩溃问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)