Xamarin - 无论页面如何都运行的代码

时间:2017-07-11 05:34:43

标签: c# xamarin xamarin.forms

在Xamarin Forms中,我在哪里编写将连续运行的代码,而不管当前哪个页面位于导航堆栈的顶部?

我正在构建一个应用程序,必须每隔10秒检查一次您的位置,看看您是否在特定位置,使用Plugin.Geolocator nuget包。无论您当前在应用中查看哪个页面,此代码都必须始终运行。

我已经在Xaml.cs页面代码隐藏中编写了代码来执行此操作,但是我在哪里编写此代码以便它始终运行并每10秒钟执行一次持续检查?

3 个答案:

答案 0 :(得分:2)

您可以使用后台任务来执行此类功能。这些确实需要特定于平台的实现,因为它们没有被抽象为Xamarin Forms。

选中此项以获得快速概述: https://xamarinhelp.com/xamarin-background-tasks/

答案 1 :(得分:0)

我没有使用Xamarin Forms的经验 但在Android中,您有两种选择: 如果仅在打开应用程序时才能使用,则可以使用线程并在C#System.Threading中使用 或者,如果您希望它在应用程序关闭时处于后台。您将需要使用服务,但在Xamarin中,它应该是相同的全球性想法,但我猜不同的实现方式

线程将在打开时在应用内部工作

服务将使用线程但在应用程序关闭时仍在后台继续在操作系统中工作,但是你需要每隔10分钟注意一次,因为它会耗尽电池

答案 2 :(得分:0)

最简单的解决办法是在项目的任何地方创建一个静态方法,只要它可以被外部类访问,并在构造函数的app.cs中执行一次。方法有点像这样:

public static void CheckPosition(){
    Task.Delay(10000).ContinueWith(delegate{
        // Your code here
        CheckPosition();
    });
}

几次运行后,您可能会收到StackOverflowException。我不确定。