我在应用程序视图中使用了大量的NinePatchDrawables.底层位图是缓存的,因此没有内存问题.
在准备/绘制屏幕时,应用程序崩溃并显示以下日志条目:
04-03 19:37:42.651: A/libc(4064): Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9e985ff8 in tid 4093 (RenderThread)
Run Code Online (Sandbox Code Playgroud)
这个问题刚刚出现了最新的Android 5.1版本(LMY47D,LMY47E,LMY47I).具有相同图形的相同视图在早期的Android版本5.0.2(LRX22C)上运行良好.我在Nexus 6上遇到问题,到目前为止我还没有机会在任何其他设备上测试它.
只有在使用大量NinePatchDrawables时才会发生崩溃,尤其是在将它们叠加在一起时.当我加载与普通png完全相同的图形(仅用于测试)时,它可以正常工作.使用较少量的NinePatchDrawables的其他视图也可以正常工作.
早期的Android版本(5.0.2或更早版本)也存在同样的问题,但每个屏幕至少发生了三到四倍的NinePatchDrawable.
04-03 19:37:42.651: A/libc(4064): Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9e985ff8 in tid 4093 (RenderThread)
04-03 19:37:42.752: I/DEBUG(354): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
04-03 19:37:42.752: I/DEBUG(354): Build fingerprint: 'google/shamu/shamu:5.1/LMY47D/1743759:user/release-keys'
04-03 19:37:42.752: I/DEBUG(354): Revision: '33696'
04-03 19:37:42.752: I/DEBUG(354): ABI: 'arm'
04-03 19:37:42.752: I/DEBUG(354): pid: 4064, tid: …Run Code Online (Sandbox Code Playgroud)