2015-12-09 72 views
0

我需要项目体系结构的一些帮助。我不能得到,ViewModel如何可以与Android服务进行通信。 我创建了可以调用某些平台功能的Inteface。MVVMCross ViewModel与Android服务沟通

public interface IGeoLocationWatcher 
{  
    GeoLocation Location { get; set; }  
    void StartLocationService(); 
    void StopLocationService();   
} 

而且Android平台上我知道这个接口

[Service] 
public class DroidGeolocationWatcher : Service, 
             Android.Gms.Common.Apis.GoogleApiClient.IConnectionCallbacks, 
             Android.Gms.Common.Apis.GoogleApiClient.IOnConnectionFailedListener, 
             Android.Gms.Location.ILocationListener,          
             IGeoLocationWatcher 
{ 
    public GeoLocation Location { get; set; }  
    public void StartLocationService(); 
    public void StopLocationService(); 
} 

当我到达新的位置,我祈求,在视图模型订阅我的自定义消息(事件)。如果应用程序在后台发送通知或在前台时 - 我更新我的用户界面。

WeakSubscribe<GeoLocationChangedMessage> ((s)=> { 
    Location = s; 
    RaisePropertyChanged(() => Location); 
}); 

但它似乎不工作。我需要提醒我做错了什么或者其他方法。感谢您的关注。

回答

0

订阅方法返回类型为MvxValueEventSubscription<T>的令牌您需要将该令牌存储在您的视图模型的属性中,否则该令牌可能会在您收到通知之前处理。

,如果你想停止接收通知,你可以这样做:

if (this.token != null) 
{ 
this.token.Dispose(); 
this.token = null; 
} 
+0

这不是我想要的,但感谢响应。 –