Android TileService onStartListening сразу не вызывается?
В документации Android TileService говорится следующее:
Когда плитка должна быть обновлена и список будет обозначен onStartListening() и onStopListening().
Основываясь на жизненном цикле TileService, предполагается, что вы НАЧИНАете обновлять состояние своих плиток, когда onStartListening()
называется.
Проблема в том, что этот обратный вызов не вызывается сразу же, когда плитка входит в представление пользователей. Это означает, что он может несколько раз отображать устаревшую информацию в течение нескольких секунд, прежде чем представление будет обновлено должным образом.
Примером этого может быть служба "Подключена", на плитке она отображается как подключенная. Затем я переключаюсь на приложение, выключаю службу и снова открываю представление быстрых настроек. Он по-прежнему показывает услугу как подключенную в течение длительного времени.
Теоретически в тот момент, когда плитка появилась в поле зрения, она должна была обновиться с новыми данными и отобразить ее как неподключенную.
Я подтвердил, что это так, просто добавив сообщение журнала в качестве первой записи в представлении. Когда я помещаю плитку в представление пользователей, это сообщение журнала не записывается в журнал cat дольше 4-5 секунд.
Так что же происходит? Я что-то пропустил?
Мой код
@Override
public void onStartListening() {
android.util.Log.d("Test", "onStartListening called");
updateTileDisplay();
registerDelegate();
}
В updateTileDisplay();
функция обновляет заголовок, состояние и значок для плитки. По завершении он вызываетtile.updateTile();
как и должно быть. Кроме того,registerDelegate();
Функция регистрирует делегата, который будет отслеживать изменения внутреннего состояния и соответственно обновлять плитку. Этот делегат позже удаляется, когдаonStopListening()
называется.
Я не вижу этого onStartListening called
сообщение журнала в течение более 5 секунд после того, как я открыл свою плитку. Кажется, это не соответствует документации TileService.