2015-12-09 70 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

這不是我想要的,但感謝響應。 –