gpt4 book ai didi

xamarin - 如何在我的应用程序中正确运行定时进程,该进程将在应用程序使用中或在后台启动时停止?

转载 作者:行者123 更新时间:2023-12-04 21:06:07 25 4
gpt4 key购买 nike

我有一个应用程序,它每分钟启动并运行一次数据库的背景检查。下面是这个的代码。

我得到了我认为的内存泄漏,并且正在查看循环代码的所有区域。

这段代码是否有可能处于循环状态并导致内存泄漏,或者 onSleep 和 onResume 编码的方式是否可以 100% 确定正确停止和启动计时器循环?

请注意,我只希望代码的定时部分在应用程序被使用时和在前台时每分钟运行一次。

namespace Japanese
{
public partial class App : Application
{

private static Stopwatch stopWatch = new Stopwatch();

public App()
{
InitializeComponent();
MainPage = new Japanese.MainPage();
}

protected override void OnStart()
{
App.DB.InitData();

if (!stopWatch.IsRunning)
stopWatch.Start();

Device.StartTimer(new TimeSpan(0, 0, 1), () =>
{
if (stopWatch.IsRunning && stopWatch.Elapsed.Minutes >= defaultTimespan)
{
Debug.WriteLine("Checking database");
PointChecker.CheckScore();
stopWatch.Restart();
}
return true;
});
}

protected override void OnSleep()
{
stopWatch.Reset();
}

protected override void OnResume()
{
stopWatch.Start();
}

}
}

最佳答案

App 类是代表跨平台移动应用程序的类,即使您的“MainPage”没有运行,它也正在运行,所以我认为您需要使用 OnAppearingOnDisappearing主页中的方法(:ContentPage)。

也许是这样的:

protected override void OnAppearing()
{
stopWatch.Start();
base.OnAppearing();
}

和,
protected override void OnDisappearing()
{
stopWatch.Reset();
base.OnDisappearing();
}

我希望有帮助,
马布鲁克。

关于xamarin - 如何在我的应用程序中正确运行定时进程,该进程将在应用程序使用中或在后台启动时停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45530812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com