(150114_17:08:32.461)I/dalvikvm-heap( 850): Grow heap (frag case) to 10.342MB for 2457616-byte allocation
(150114_17:08:32.542)D/dalvikvm( 850): GC_FOR_ALLOC freed 20K, 25% free 10530K/14040K, paused 34ms, total 34ms
(150114_17:08:32.551)D/dalvikvm( 850): GC_CONCURRENT freed 7K, 26% free 10524K/14040K, paused 1ms+5ms, total 24ms
(150114_17:08:32.551)D/OpenGLRenderer( 850): GL error from OpenGLRenderer: 0x506
android4.2版定製的Launcher, 有機率出現應用整個繪製成花屏、黑屏或者字體繪製成方塊等問題,出現花屏問題的時候出現以上LOG
解決辦法:
當View 調用destroyLayer()的時候判斷如果當前的硬件加速不可用的時候,調用mHardwareRenderer的safelyRun來刪除mHardwareLayer的資源
修改View.java destroyLayer(boolean valid)方法
boolean destroyLayer(boolean valid) {
if (mHardwareLayer != null) {
AttachInfo info = mAttachInfo;
if (info != null && info.mHardwareRenderer != null &&
info.mHardwareRenderer.isEnabled() &&
(valid || info.mHardwareRenderer.validate())) {
info.mHardwareRenderer.cancelLayerUpdate(mHardwareLayer);
mHardwareLayer.destroy();
mHardwareLayer = null;
invalidate(true);
invalidateParentCaches();
}
else if(info != null && info.mHardwareRenderer != null)
{
info.mHardwareRenderer.safelyRun(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mHardwareLayer.destroy();
mHardwareLayer = null;
if (mDisplayList != null)
mDisplayList.reset();
invalidate(true);
invalidateParentCaches();
}
});
}
return true;
}
return false;
}
附上代碼優化方案http://zuiniuwang.blog.51cto.com/3709988/721798/