首页 > 解决方案 > Xamarin.Forms-通过后退按钮关闭应用程序时保持计时器运行

问题描述

我有一个运行良好的计时器,但如果我通过后退按钮关闭应用程序,我希望计时器继续计数而不会丢失它的实例状态。

这是我开始计时器的地方:

    /// <summary>
    /// Starts the timer
    /// </summary>
    private void StartCommandAction()
    {
        CancellationTokenSource cts = _cancellationTokenSource; // safe copy
        Device.StartTimer(TimeSpan.FromSeconds(1),() =>
        {
            if (cts.IsCancellationRequested)
            {
                return false;
            }
            else
            {

                Device.BeginInvokeOnMainThread(() =>
                {
                    TimeSpan _TimeSpan = TimeSpan.FromSeconds(TotalSeconds.TotalSeconds);

                    LblTime = string.Format("{0:00}:{1:00}:{2:00}", _TimeSpan.Hours, _TimeSpan.Minutes, _TimeSpan.Seconds);
                });

                Count();
                return true;
            }
        });
        IsVisibleButtonStart = false;
        IsVisibleButton = true;


    }

这是我停止计时器的地方:

    /// <summary>
    /// Stops the timer
    /// </summary>
    private void StopCommandAction()
    {

        Interlocked.Exchange(ref _cancellationTokenSource, new CancellationTokenSource()).Cancel();

        IsVisibleButton = false;
        IsVisibleButtonStart = true;


        }

这是我记录时间的地方:

    /// <summary>
    /// Counts the timer
    /// </summary>
    private void Count()
    {
        TotalSeconds = totalSeconds.Add(new TimeSpan(0, 0, 0, 1));

    }

标签: c#xamlmvvmxamarin.forms

解决方案


你的愿望是一回事,技术上可能的事情是另一回事。

所以这是不可能的。但是您总是可以做到这一点并跟踪用户退出并进入应用程序的时间,并使其看起来完全按照您的要求工作。


推荐阅读