Ala*_*an2 5 xamarin xamarin.forms
我有一个应用程序启动并每分钟运行一次数据库的后台检查.以下是此代码.
我得到了我认为是内存泄漏的东西,我正在查看循环代码的所有区域.
是否有可能将此代码留在循环状态并导致内存泄漏,或者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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 2
App 类是代表跨平台移动应用程序的类,即使您的“MainPage”没有运行,它也在运行,所以我认为您需要在主页中使用OnAppearing和方法(a )。OnDisappearing:ContentPage
也许是这样的:
protected override void OnAppearing()
{
stopWatch.Start();
base.OnAppearing();
}
Run Code Online (Sandbox Code Playgroud)
和,
protected override void OnDisappearing()
{
stopWatch.Reset();
base.OnDisappearing();
}
Run Code Online (Sandbox Code Playgroud)
我希望这会有所帮助,马布鲁克。
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |