Просмотр не обновляется после приостановки / возобновления приложения - PullRequest
1 голос
/ 09 апреля 2019

У меня есть компонент, в котором я подписываюсь на Observable.В обратном вызове я установил переменные-члены в этом компоненте.Значения этих переменных затем будут отображаться на странице компонента.

Но когда приложение выходит из области видимости (например, вручную или из-за всплывающего окна ОС Android с запросом разрешения местоположения) и возвращается впредставление больше не обновляется (хотя обратный вызов по-прежнему получает новые значения, как показывает журнал консоли).

Рабочий пример: пустое стартовое приложение со следующим содержимым класса домашней страницы (требуется подключаемый модуль геолокации cordova)

export class HomePage implements OnInit {

  lat = 0;
  long = 0;

  private subscription: Subscription;

  constructor(private geolocation: Geolocation,
              private zone: NgZone)
  {
  }

  ngOnInit()
  {
    console.log('constructor() Subscribing');
    this.renewSubscription();
  }

  renewSubscription()
  {
    if(this.subscription)
    {
      this.subscription.unsubscribe();
      this.subscription = null;
    }

    this.subscription = this.geolocation
                            .watchPosition({ enableHighAccuracy : true})
                            .subscribe(this.onLocationChange);
  }

  private onLocationChange = (location: Geoposition) =>
  {
    if(location.coords)
    {
      console.log(location.coords.latitude + ':' + location.coords.longitude);

        this.lat  = location.coords.latitude;
        this.long = location.coords.longitude;

    }
    else
    {
      console.dir('no coordinates');
      console.dir(location);
    }
  }

}

и последующее в качестве замены html-контента главной страницы

{{ lat }}:{{ long }}.

В качестве небольшого поиска я подозреваю, что после приложениявозобновление многих из кода больше не живет в угловой зоне или что-то вроде этого, потому что при установке lat и long внутри зоны явно работает снова

this.zone.run(() => {

        this.lat  = location.coords.latitude;
        this.long = location.coords.longitude;
      });

Дело в том, что этоочень упрощенная версия приложения, над которым я работаю, - в котором много подписок и косвенных ссылок, поэтому я не смогind код, который я должен поместить в угловую зону вручную.

Есть ли способ запустить код приложения в угловой зоне после его возобновления, как после обычного запуска приложения?

РЕДАКТИРОВАТЬ

Вставка кода в platform.resume также не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...