2016-07-10 4 views
0

У меня есть плитка, которая, когда активна, запускает таймер, выполняет задачу за эти пять минут, а затем возвращается в неактивное состояние через определенное время.Сохранение функции TileService?

Проблема, с которой я столкнулся, однако, это убийство службы. Я уже звоню startForeground(id), когда запущен таймер, но моя служба все равно будет убита. Я также возвращаю START_STICKY от onStartCommand(intent, flags, startID).

Есть ли вообще, чтобы полностью предотвратить его от убийства, или мне просто не повезло?

+1

Я подозреваю, что 'TileService' не запущен, а скорее привязан к. Если это так, так как 'startService()' не вызывается на него, служба будет уничтожена, когда клиент распадается. Я предлагаю вам переместить свою бизнес-логику в отдельную обычную «Сервис», чтобы вы могли лучше контролировать свою жизнь. – CommonsWare

+0

@CommonsWare Ах, я думаю, что вы здесь. Я попробую это и вернусь к тебе! – russjr08

+0

@CommonsWare Просто хотел вернуться к вам и сообщить вам, что это сработало :) – russjr08

ответ

0

Мне удалось решить эту проблему с помощью совета @ CommonWare. Я отвлек всю свою логику до обычного класса Service и вызываю startService() из класса сервиса Tile.

Единственный дорожный удар, с которым я столкнулся, выяснял, как получить экземпляр Tile для новой службы (которая обрабатывает текст и состояние плитки), но решила это, используя класс Application, чтобы провести ссылку на плитку , (TileService обновляет эту ссылку каждый onClick, прежде чем звонить startService())

Это, вероятно, не самый чистый и лучший способ сделать это, но на данный момент я предпочитаю покататься.

+1

['Tile' is' Parcelable'] (https://developer.android.com/reference/android/service/quicksettings/Tile. html) и может быть передан через «Intent» дополнительно к другой службе. – CommonsWare

+0

Хорошая точка! Не знаю, как я это пропустил. – russjr08

+0

Кажется, проблема связана с передачей ее через намерение. Я открыл проблему в трекере ошибок (https://code.google.com/p/android/issues/detail?id=216639), если я не просто ошибаюсь :) – russjr08