Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android视图在启用HA后返回前台时被搞砸了_Android_Android Layout_Android View_Hardware Acceleration - Fatal编程技术网

Android视图在启用HA后返回前台时被搞砸了

Android视图在启用HA后返回前台时被搞砸了,android,android-layout,android-view,hardware-acceleration,Android,Android Layout,Android View,Hardware Acceleration,我不知道为什么在将应用程序从后台带回前台时,视图会被弄乱。只有在我的android清单中启用了硬件加速时,才会发生这种情况。如果禁用HA,则视图还原是正常的 启用HA的Android清单部分: <application android:name=".MainApplication" android:allowBackup="false" android:hardwareAccelerated="true" ... 在谷歌搜索之后,在将HA

我不知道为什么在将应用程序从后台带回前台时,视图会被弄乱。只有在我的android清单中启用了硬件加速时,才会发生这种情况。如果禁用HA,则视图还原是正常的

启用HA的Android清单部分:

<application
        android:name=".MainApplication"
        android:allowBackup="false"
        android:hardwareAccelerated="true"
...


在谷歌搜索之后,在将HA webview置于前台时恢复HA webview似乎是一个已知的问题: (这是一个中文网站)

在将应用程序置于后台时,我通过在活动的根视图中循环来禁用所有网络视图中的HA,从而解决了该问题:

public void recursivelyDeactivateHA(ViewGroup parent) {
    for (int i = parent.getChildCount() - 1; i >= 0; i--) {
        final View child = parent.getChildAt(i);
        if (child != null && child instanceof WebView && child.isHardwareAccelerated()) {
            Logger.getLogger().e("disable HA for child: " + child);
            child.setLayerType(LAYER_TYPE_SOFTWARE, null);
        } else if (child instanceof ViewGroup) {
            recursivelyDeactivateHA((ViewGroup) child);
        }
    }
}
然后通过以下方式重新加载所有网络视图:

webView.reload();

经过一些搜索,我发现它与这个问题有关: