在 <activity> 或 <application> 中设置 android:hardwareAccelerated="true"

Setting android:hardwareAccelerated="true" in <activity> or in <application>

我希望我的应用程序(它严重依赖 GPU)使用硬件加速。在某些论坛上,有人建议我在 <application> 内设置 android:hardwareAccelerated="true",而在其他论坛上,我在 AndroidManifest.xml 内的 <activity> 内设置相同的属性。下面是它的外观表示:

<application
    ...
    android:hardwareAccelerated="true"
    ...>
    <activity
        ...
        android:hardwareAccelerated="true"
        ...>
    </activity>
</application>

我最后两个都设置了,但我想知道哪一个是正确的方法,有什么区别?

如果你在<application>上设置就意味着整个应用都有hardwareAccelerated特性,你不需要在<activity>上再次设置,但是如果你的应用有在全局打开硬件加速的情况下无法正常运行,您可以将其设置为 <activity>,这意味着只有特定的 activity 具有 hardwareAccelerated 功能,而不是整个应用程序。所以我认为在你的情况下,你只能在 <application> 标签上设置它。

在此处查看更多信息。 https://developer.android.com/guide/topics/graphics/hardware-accel

默认情况下启用硬件加速,因此您不必设置它,除非您需要禁用它。正如 documentation 中所说:

Hardware acceleration is enabled by default if your Target API level is >=14, but can also be explicitly enabled.

回答你的问题。在 Application 标签上设置它会影响您的整个应用程序,而在 Activity 标签上设置它会影响 activity.

应用级别

在您的 Android 清单文件中,将以下属性添加到标记以启用整个应用程序的硬件加速:

<application android:hardwareAccelerated="true" ...>

Activity级

如果您的应用程序在全局启用硬件加速的情况下无法正常运行,您也可以针对个别活动控制它。要在 activity 级别启用或禁用硬件加速,您可以使用元素的 android:hardwareAccelerated 属性。以下示例为整个应用程序启用硬件加速,但为一个 activity:

禁用它
<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>