Android Pie додає функцію, яка запобігає завершенню ігор, які потребують великої кількості оперативної пам’яті, якщо ви випадково вийшли з них

click fraud protection

Android Pie виходить сьогодні, і одна з цікавих прихованих функцій — це можливість запобігти зупинці ігор із великою кількістю оперативної пам’яті, якщо ви випадково вийшли з них.

Раніше сьогодні Google офіційно оголошено Android Pie для Google Pixel і Google Pixel 2. Відразу після цього Випущено Essential оновлення Android 9 для Essential Phone. Інші пристрої, які брали участь у програмі бета-тестування Android P незабаром має отримати оновлення, тож користувачам, які пропустили попередній перегляд для розробників, тепер потрібно багато чого надолужити. Коли ми вивчаємо останній випуск, включаючи скидання вихідного коду на AOSP і останнього документа визначення сумісності (CDD), ми будемо періодично оновлювати вас будь-якою новою інформацією, яку ми виявимо. Щось цікаве, що ми знайшли в CDD, це розділ для «важкоатлетичних» (з великою кількістю оперативної пам’яті) програм та ігор при цьому Android Pie пріоритетно зберігає ці програми в оперативній пам’яті, якщо користувач випадково вийде їх.

«Важкі» програми та ігри в Android Pie

Додано новий розділ CDD що окреслює цю особливість. Ось що там написано:

3.17. Вагові додатки

Якщо реалізації пристрою оголошують функцію FEATURE_CANT_SAVE_STATE, то вони:

  • [C-1-1] ПОВИНЕН мати лише одну встановлену програму, яка вказує cantSaveState, запущену в системі одночасно. Якщо користувач залишає таку програму без явного виходу з неї (наприклад, натиснувши кнопку «Домашня сторінка» під час виходу з активної дії в системі, замість натискання «Назад», не залишаючи активні дії в системі), тоді реалізації пристроїв ОБОВ’ЯЗКОВО встановлюють пріоритет цій програмі в оперативній пам’яті, як і для інших речей, які, як очікується, продовжуватимуть працювати, наприклад, на передньому плані послуги. Поки така програма працює у фоновому режимі, система все ще може застосовувати до неї функції керування живленням, як-от обмеження доступу до процесора та мережі.
  • [C-1-2] ПОВИНЕН надати можливість інтерфейсу користувача для вибору програми, яка не братиме участь у механізмі збереження/відновлення нормального стану, коли користувач запускає другу програму, оголошену з атрибутом cantSaveState.
  • [C-1-3] НЕ ПОВИННО застосовувати інші зміни в політиці до програм, які вказують cantSaveState, як-от зміна продуктивності ЦП або зміна пріоритетів планування.

Якщо реалізація пристрою не оголошує функцію FEATURE_CANT_SAVE_STATE , потім вони:

  • [C-1-1] ПОВИНЕН ігнорувати атрибут cantSaveState, встановлений програмами, і НЕ ПОВИНЕН змінювати поведінку програми на основі цього атрибута.

По суті, це означає, що якщо пристрій підтримує FEATURE_CANT_SAVE_STATE функція, то вони повинні надати пріоритет збереженню в RAM запущеної програми, яка визначає cantSaveState атрибут. Пріоритезація оперативної пам’яті спрацьовує, якщо користувач виходить із програми чи гри, натиснувши кнопку «Домашня сторінка» або залишивши програму чи гру, не виходячи з них (наприклад, натиснувши кнопку «Назад») або кнопку виходу.) Крім того, система все ще може економити енергію, обмежуючи ЦП і доступ до мережі для цих програм, але вони просто не можуть звільнити оперативну пам’ять, вбивши їх, якщо це не необхідно. Насамкінець зауважте, що дозволено працювати лише одній програмі з визначеним атрибутом cantSaveState. Якщо ви спробуєте запустити іншу програму з цим атрибутом, визначеним під час роботи іншої, Android Pie попросить вас вибрати гру, яку ви хочете продовжити.

Ви можете перевірити, чи підтримує ваш пристрій FEATURE_CANT_SAVE_STATE, виконавши такі дві команди через ADB:

adb shell
dumpsys package | grep "cant_save_state"

Щоб перевірити, чи програма вказує атрибут cantSaveState, потрібно буде декомпілювати програму та переглянути її маніфест або використати dumpsys package package.name.here команда в оболонці ADB. Майте на увазі, що цей атрибут щойно додано на рівні API 28 (Android 9 Pie), тому навряд чи багато програм чи ігор скористаються цим.

Ця функція буде неймовірно корисною для пристроїв з невеликим об’ємом оперативної пам’яті та/або програм, які споживають масу оперативної пам’яті. Наприклад, Fortnite Mobile на Android вимагає мінімум 3 Гб оперативної пам'яті через те, скільки оперативної пам’яті він споживає (навіть не запускаючи гру, Fortnite Mobile зарезервував 1,6 ГБ оперативної пам’яті на моєму Google Pixel 2 XL.) Якби Fortnite націлився на SDK рівень 28 і використовувати цю функцію, то це означає, що випадковий вихід з гри, як ми сподіваємося, запобіжить її негайному завершенню, якщо ваш пристрій вичерпується вільна оперативна пам'ять. На жаль, Fortnite націлений лише на рівень SDK 21 на даний момент (Android 5.0 Lollipop), тому, на жаль, він не використовує останні API, які Google пропонує в Android Pie, не кажучи вже про Android Oreo, Android Nougat або Android Marshmallow. Сподіваємось, інші ігри оновляться, щоб скористатися цією функцією. Наступного року Google вимагатимуть їх для оновлення, якщо вони хочуть мати можливість продовжувати надсилати оновлення в Google Play Store.