web-dev-qa-db-fra.com

Configuration d'Android: hardwareAccelerated = "true" dans <activité> ou dans <application>

Je veux que mon application, qui s'appuie fortement sur le GPU, utilise l'accélération matérielle. Sur certains forums, on m'a suggéré de définir Android:hardwareAccelerated="true" à l'intérieur <application> et sur d'autres forums le même attribut dans <activity> dans mon AndroidManifest.xml. Voici la représentation de ce à quoi il ressemble:

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

J'ai fini par m'installer dans les deux, mais je me demande, laquelle est la bonne façon et quelle est la différence?

8
Serj Ardovic

L'accélération matérielle est activée par défaut, vous n'avez donc pas à la définir, sauf si vous devez la désactiver. Comme indiqué dans le documentation :

L'accélération matérielle est activée par défaut si votre niveau d'API cible est> = 14, mais peut également être explicitement activé.

Pour répondre à ta question. Le définir sur la balise Application affecte l'ensemble de votre application et le définir sur la balise Activity affecte cette activité.

Niveau d'application

Dans votre fichier manifeste Android Android, ajoutez l'attribut suivant à la balise pour activer l'accélération matérielle pour l'ensemble de votre application:

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

Niveau d'activité

Si votre application ne se comporte pas correctement avec l'accélération matérielle activée globalement, vous pouvez également la contrôler pour des activités individuelles. Pour activer ou désactiver l'accélération matérielle au niveau de l'activité, vous pouvez utiliser l'attribut Android: hardwareAccelerated pour l'élément. L'exemple suivant active l'accélération matérielle pour l'application entière mais la désactive pour une activité:

<application Android:hardwareAccelerated="true">
    <activity ... />
    <activity Android:hardwareAccelerated="false" />
</application>
14
Alex.F

Si vous activez <application> cela signifie que l'application entière possède la fonction hardwareAccelerated et que vous n'avez pas besoin de la réactiver sur <activity>, mais si votre application ne se comporte pas correctement avec l'accélération matérielle activée globalement, vous pouvez la définir sur <activity>, et cela signifie seulement qu'une activité spécifique a la fonctionnalité hardwareAccelerated et non l'application entière. Je pense donc que dans votre cas, vous ne pouvez le régler que sur <application> tag.

Voir plus ici. https://developer.Android.com/guide/topics/graphics/hardware-accel

3
Tepits