访问UI时在后台调用Web服务

时间:2014-01-13 17:29:51

标签: web-services background xamarin.ios

我遇到这样的情况:只要应用程序启动,我就必须调用Web服务将未保存的数据发送回服务器,同时我继续访问应用程序。我应该能够导航到不同的视图,执行UI任务。 我可以使用任务

 Task CallWebService()
 {
     return Task.Factory.StartNew(() => {
        // make your service call. 
     });  
 }
 CallWebService().ContinueWith(task => {

     if(task.isFaulted)
         throw new AggregateException(task.Exception.InnerException.Message);

     // Runs when the task is finished
     InvokeOnMainThread(() => {
         // Hide your activity indicator here. 
         StopActivityIndicator();
     });

 });

我不知道在哪里调用InvokeOnMainThread,因为用户可以在任何视图上。我们如何处理。

2 个答案:

答案 0 :(得分:0)

我会将下载程序创建为带有事件处理程序的静态类(或使用依赖项解析程序)。在您的视图中,控制器会覆盖ViewDidAppear和ViewDidDisappear,您将在其中订阅和取消订阅事件。

答案 1 :(得分:0)

在AppDelegate.cs中,您可以将“任务”添加到FinishedLaunching覆盖和OnActivated覆盖,假设您有办法确定是否有任何“未保存”的数据需要发送到服务器。

public override void OnActivated (UIApplication application)
{

}
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{

}