Я владел (и в настоящее время владею) устройствами Samsung, поэтому я немного знаю, как это работает с точки зрения пользователя. Технические характеристики и то, как это работает внутри, — это совершенно отдельная тема, на которую я не могу ответить.
Система может определить, открываете ли вы приложение. Samsung использует это в оптимизации своих приложений и будет экономить энергию на приложениях, которые не использовались более трех дней. Хотя это ужасная система.
Он игнорирует фоновые процессы, которые могут иметь решающее значение для приложений, и даже если это приложение, которое вы активно используете, например, фитнес-трекер, у него будут проблемы. Чтобы процитировать то, что он говорит в списке оптимизации приложения:
В целях экономии заряда аккумулятора приложения, которые не использовались более 3 дней, будут помечены как энергосберегающие. Приложения, предназначенные для экономии энергии, могут не отображать уведомления
(Грубый перевод с норвежского, первоначально взятого с S6 под управлением Android 6)
Таким образом, приложения, которые были установлены вручную или автоматически (3 дня неиспользования), могут вызывать различные проблемы с фоновыми процессами. Но помните, что пользователь может настроить любое приложение так, чтобы оно никогда не экономило заряд батареи и игнорировало автоматическую настройку. Итак, имея это в виду, давайте рассмотрим возможные решения.
Существует один сценарий, в котором вам не нужно беспокоиться о приложении и его оптимизации: когда оптимизация приложения полностью отключена.
Помимо этого, вы можете сделать только две вещи:
Попросите пользователей Samsung отключить оптимизацию батареи для вашего приложения, чтобы предотвратить проблемы.
Как предложил @MinaSamy (в их теперь удаленном ответе), SyncAdapter и периодическая синхронизация. Обратите внимание, что я не проверял это, поэтому я не знаю, работает это или нет.
И есть также третий вариант, который на самом деле не является решением, но вы можете проигнорировать его и сделать ставку на отключение оптимизации приложения или просто не заботиться об этом вообще.
Кто-нибудь знает, что Samsung считает используемым, и могу ли я как-то это вызвать?
Насколько я знаю, если Samsung не добавила какие-то меры защиты от случайного открытия или не добавила какие-то минимальные требования к активности, открытия было достаточно. Это кажется глупой функцией, которая работает по жестко запрограммированным правилам, а не по динамической системе, которая фактически определяет использование приложения и устанавливает энергосбережение относительно этого. Его легко включить, но, к счастью, также легко отключить.
Это означает, что вы не можете инициировать событие, которое будет поддерживать его (если только SyncAdapter не поможет)
И чтобы прояснить факты, из @Neil answer:
Похоже, что пользователь может это сделать, поэтому должна быть какая-то база данных или настройка, которая управляет этим.
Типа есть. Всего существует четыре параметра, три из которых относятся к конкретному приложению, и они хранятся в базе данных (или в каком-либо другом виде хранилища данных). Эти четыре параметра можно использовать, хотя и крайне поверхностно, для изменения поведения оптимизации приложения:
- Всегда оптимизировать
- Автоматическая оптимизация
- Никогда не оптимизируйте
- Отключить оптимизацию приложения
Первые три параметра относятся к каждому приложению отдельно, что означает, что каждое приложение может иметь отдельные настройки. Отключение оптимизации приложений — это именно то, что вы ожидаете: оно отключает всю функцию для всех приложений. Если он полностью отключен, ничего не оптимизируется.
Существует также веб-сайт, на котором перечислены способы обхода оптимизации для каждого бренда. Запись для Samsung более или менее соответствует тому, что я сказал: скажите пользователю вручную отключить оптимизацию. Девелоперских решений нет.
person
Zoe
schedule
29.03.2017