【发布时间】:2015-12-09 14:30:56
【问题描述】:
我需要一些有关项目架构的帮助。 我不明白 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();
}
当我获得一个新位置时,我会调用在 ViewModel 中订阅的自定义消息(事件)。 如果应用在后台运行,我会发送通知,或者在前台运行时 - 我会更新我的 UI。
WeakSubscribe<GeoLocationChangedMessage> ((s)=> {
Location = s;
RaisePropertyChanged(() => Location);
});
但它似乎不起作用。我需要一些建议我做错了什么或另一种方法。
感谢您的关注。
【问题讨论】:
标签: xamarin xamarin.android android-service mvvmcross