2017-01-28 3 views
1

У меня есть служба уведомлений переднего плана, которая постоянно контролирует действия пользователя, используя ActivityRecognition и записывает их в AWS в любое время, когда пользователь изменяет состояние. Он работает хорошо в течение некоторого времени. Однако я заметил, что когда пользователь простаивает дольше, например, пользователь спит всю ночь, приложение (активность и сервис) тихо умирает. Я предполагаю, что это из-за режима доз (потому что я включил одно и то же приложение на другом телефоне, и он работает нормально уже более 2 дней)Android M: Как программно отключить режим доз

How to WhiteList app in Doze mode Android 6.0 дает хороший обзор о том, как отключить режим доз с вмешательством пользователя. Но @commonsware блог ниже наводит на мысль о Google «возможно» запрете приложений, которые показывают соответствующее всплывающее окно https://commonsware.com/blog/2015/11/11/google-anti-trust-issues.html

Note: Google Play policies prohibit apps from requesting direct exemption from Power Management features in Android 6.0+ (Doze and App Standby) unless the core function of the app is adversely affected. 

Может кто-то помочь мне в понимании того, какие функции, возможно, может включать в себя «основные функции», поэтому Google не запретит мое приложение. Мы знаем, что режим дремать не влияет на некоторые приложения, такие как WhatsApp

EDIT

Я вижу это на телефонах Samsung с 6.0.1

+0

https://developer.android.com/training/monitoring-device-state/doze-standby.html#whitelisting-cases - единственная документация, которую я знаю по этому вопросу. – CommonsWare

ответ

2

Android не убивает услуги в фоновом режиме с дремлют. За ActivityRecognitionApi documentation:

Чтобы сохранить батарею, отчет о деятельности может прекратиться, если устройство «STILL» в течение длительного периода времени. Он возобновится после повторного перемещения устройства. Это происходит только на устройствах, поддерживающих аппаратуру Sensor.TYPE_SIGNIFICANT_MOTION.

Поэтому ожидается, что он будет иметь значительный период времени, когда вы не получите никаких обратных вызовов распознавания активности. В этих случаях вы можете предположить, что последнее полученное действие (STILL) по-прежнему применимо.

+0

Я не вижу активность/обслуживание в диспетчере задач, панель уведомлений в верхней части исчезла, периодический таймер, который имеет записи журналов, больше не выплевывает их - в целом заставляет меня поверить, что режим дожей убивает мое приложение. – mobileDev

+1

[ограничения доз] (https://developer.android.com/training/monitoring-device-state/doze-standby.html#restrictions) не включает в себя убийство вашего сервиса. Возможно, производитель этого устройства делает что-то другое? Вы тестируете устройство Nexus? – ianhanniballake

+0

это происходит на Samsung, а не на Moto (не пробовали на других телефонах) – mobileDev

Смежные вопросы