Mvvm Xamarin表单-应用程序从推送通知打开-绑定属性已更改,没有任何效果

Mvvm Xamarin表单-应用程序从推送通知打开-绑定属性已更改,没有任何效果,mvvm,xamarin.forms,push-notification,system.reactive,scheduling,Mvvm,Xamarin.forms,Push Notification,System.reactive,Scheduling,我有一个ViewModel,它监听推送通知,并在收到通知时将bool设置为true。当该布尔值为真时,相应视图中的图标将变为红色 当应用程序位于前台并收到推送时,它将按预期工作。但是,当应用程序处于后台并通过通知打开时,图标颜色不会改变 代码如下: Disposables .Add(pushService .NewMessage .SubscribeOn(_schedulerProvider.Background) .ObserveO

我有一个
ViewModel
,它监听推送通知,并在收到通知时将bool设置为true。当该布尔值为真时,相应视图中的图标将变为红色

当应用程序位于前台并收到推送时,它将按预期工作。但是,当应用程序处于后台并通过通知打开时,图标颜色不会改变

代码如下:

Disposables
    .Add(pushService
         .NewMessage
         .SubscribeOn(_schedulerProvider.Background)
         .ObserveOn(_schedulerProvider.Foreground)
         .Subscribe(_ => HasNewMessages = true, LogError));
为了试图了解发生了什么,我做了:

Disposables
    .Add(pushService
         .NewMessage
         .SubscribeOn(_schedulerProvider.Background)
         .ObserveOn(_schedulerProvider.Foreground)
         .Subscribe(async _ => 
         {
             await _navigationService.DisplayAlert("push", "push", "ok");
             HasNewMessages = true;
         }, LogError));
果不其然,当应用程序处于后台并通过通知打开时,会出现警报,图标变为红色

更新

我想,可能是因为我不明白的原因,当应用程序从通知打开时,事件的观察没有在UI线程上发生,所以我尝试了以下方法,但这当然不是问题所在

Disposables
    .Add(pushService
         .NewMessage
         .SubscribeOn(_schedulerProvider.Background)
         .Subscribe(_ => Device.BeginInvokeOnMainThread(() => HasNewMessages = true), LogError));

另外,请注意,一旦应用程序通过通知打开,它就不会在前台对通知做出“反应”。

代码是“我的问题”很好。 问题在于:

protected override void OnResume() { ImageService.Instance.SetExitTasksEarly(false); }

我的图标(应该变成红色的图标)是来自(TheGreat)的Svg,上面的调用阻止了它(不知何故)改变颜色。一旦我删除了覆盖,一切都按预期进行。

属性
HasNewMessages
是什么样子的?当更新了
HasNewMessages
时,您是否在ViewModel上触发了
PropertyChanged
事件?绑定很好(在应用程序中是数百万中的一个;-)。啊,好的。我想是这样的,但我想问一下也无妨。我感觉这与应用程序生命周期和订阅被处置或暂停有关,或者与这些概念有关。