繁体   English   中英

订阅Windows Phone 8的MvvmCross服务的后台任务

[英]Subscribing to an MvvmCross Service for Windows Phone 8 background tasks

我正在使用MvvmCross应用程序的Windows Phone 8部分。 我需要对其进行构建,以便当应用程序在后台运行时,它将定期检查服务器是否有更新,如果有更新,则显示敬酒通知。

由于项目的核心已经有一个用于检查更新并在找到消息时发布消息的服务,所以我想知道是否有一种方法可以在App.xaml.cs中订阅此服务并为其提供处理方法服务器通信服务发布的任何内容。

这有可能吗? 有没有更好的方法可以做到这一点? 我意识到后台运行是非常特定于平台的,但是是否有任何MvvmCross插件可以帮助您呢?

我认为您将能够像执行常规Windows Phone 8后台任务一样实现此功能。 我不知道有任何插件可以执行此操作,因为每个平台都以自己的方式进行处理。... 以此为例。 您需要修改应用清单文件,并使用以下内容覆盖WMAppManifest.xml中的DefaultTasks元素:

<DefaultTask Name="_default" NavigationPage="MainPage.xaml">
  <BackgroundExecution>
    <ExecutionType  Name="MyBackgroundThing" />
  </BackgroundExecution>
</DefaultTask>

然后在App.xaml中,您需要覆盖shell:PhoneApplicationService元素以为RunningInBackgroundEvent注册事件处理程序,如下所示:

<shell:PhoneApplicationService 
    Launching="Application_Launching" Closing="Application_Closing" 
    Activated="Application_Activated" Deactivated="Application_Deactivated"
    RunningInBackground="Application_RunningInBackground"/>

然后,在App.xaml.cs中,您需要声明一些对于应用程序是全局的静态变量。 这可能包括对后台服务的引用和RunningInBackground bool。 像这样:

public static MyBackgroundService BackgroundService{ get; set; }
public static bool RunningInBackground { get; set; }

在App.xaml.cs中,添加RunningInBackground事件处理程序,如下所示:

private void Application_RunningInBackground(object sender,    RunningInBackgroundEventArgs args)
{
    RunningInBackground = true;
    // Suspend all unnecessary processing such as UI updates
}

还更新Application_activated方法以将RunningInBackground全局变量设置为false,如下所示:

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    RunningInBackground = false;
}

取决于您的服务正在做他们可能要做的其他事情,但这应该是首当其冲的……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM