为什么将hardwareaccelerated设置为false会使事情变得更快?

时间:2013-07-17 07:34:22

标签: android

我有一个应用程序在带有两个窗格的平板设备上运行,左边一个我有一个简单的动画替换片段:

private void loadLeftFragment(Fragment fragment, boolean isAnimated) {
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();

        if (isAnimated) {
            fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left,
                    android.R.anim.slide_out_right);
        }

        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.replace(R.id.left_frame, fragment).commit();
    }

请注意代码的动画和平。它在Nexus 7上运行得非常流畅,但在Galaxy Tab 2上却没有。所以我在AndroidManifest.xml中尝试了android:hardwareAccelerated="true/false"标记。我得到的是,当值设置为false时,Galaxy Tab 2上的动画就像在Nexus 7上一样,即平滑而美观。我没想到这样的行为,假设反之亦然 - 将hardwareAccelerated值设置为true会让事情“更顺畅”。但是如果我把它设置为true我会看到滞后,当false它很好时,就会发生这种情况!我在这里缺少什么?谢谢。

1 个答案:

答案 0 :(得分:11)

这一切都取决于内存使用情况。打开硬件加速时会发生什么, 应用程序的动画和UI渲染发生在GPU上,这会导致系统受到内存使用的影响。为每个进程加载OpenGL驱动程序需要大约2MB的内存使用量,并将其增加到8MB。在RAM有限的设备上,这可能是一个真正的问题。当更多RAM被吃掉时,系统必须关闭更多后台任务以节省内存。

因此必须巧妙地使用此选项,具体取决于目标设备。