Установка разных значений ресурсов с помощью папки значений для разных версий API - PullRequest
1 голос
/ 08 ноября 2019

Я заметил сбой на Android 6 с сообщением об ошибке - «A / OpenGLRenderer: Ошибка: переполнение окружающего буфера вершин !!!»Установка аппаратного ускорения на false для действия в файле манифеста решает проблему, но влияет на производительность приложения (приводит к замедлению работы приложения).

Я хочу просто установить значение false только в том случае, если версия для Android равна 23(андроид М) а не иначе. Вот как я подошел к нему:

Файл манифеста Android:

<activity
android:name=".MainActivity"
android:hardwareAccelerated="@bool/hardwareAcceleratedValue">

res / values ​​/ bool. xml

<resources>
    <bool name="hardwareAcceleratedValue">true</bool>
</resources>

res / values-v23 / bool.xml

<resources>
    <bool name="hardwareAcceleratedValue">false</bool>
</resources>

С этим язаметил снижение производительности на устройствах Android M (что и ожидалось), но также на устройствах с Android 9. Поэтому я решил создать еще одну папку для android 9 и добавил в нее файл с «hardwareAcceleratedValue» как true и производительность была выше.

Вопрос -

Для android API, отличных от v23, не следует, чтобы андроид считывал значение «hardwareAcceleratedValue» из res / values ​​/ bool.xml? Или мне придется создавать отдельные папки для каждого Android API и создать файл bool.xml внутри него, т.е. res / values-v28 / bool.xml или res / values-v27 / bool.xml?

Как можноЯ просто установил для «hardwareAcceleratedValue» значение false только для Android-M или менее и true для всех версий, кроме Android-M?

1 Ответ

0 голосов
/ 08 ноября 2019

Для android API, отличного от v23, не должен ли android считывать значение «hardwareAcceleratedValue» из res / values ​​/ bool.xml?

-v23 используется для уровня API 23 и выше .

Как можно просто установить для «hardwareAcceleratedValue» значение false только для Android-M или менее и значение true для всех версий, кроме Android-M?

Имеют false в res/values/bool.xml и true в res/values-v22/bool.xml. Android M - это API-уровень 21, поэтому -v22 будет использоваться для всех более высоких версий.

Если под "android-M" вы подразумеваете Android 5.x, тогда false в res/values/bool.xml и true в res/values-v23/bool.xml, так как Android 5.1 был API уровня 22.

...