【问题标题】:OnCreate called twice when using CountDownTimer in Android在 Android 中使用 CountDownTimer 时调用了两次 OnCreate
【发布时间】:2016-08-23 07:02:10
【问题描述】:

我正在尝试实现一个带有文本视图的视图,每 600 毫秒倒数一个数字,并在文本视图中动态显示该数字。

问题:活动按预期调用,但在倒计时期间,活动再次创建,倒计时从头开始。我的活动中的 OnCreate() 方法被调用了两次,尽管它应该被调用一次。我知道它可能由屏幕方向的变化和其他配置更改触发,但这里似乎没有发生。

OnCreate() 在我的活动中:

protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.SqueezeLayout);
        countdownTextView = (TextView)FindViewById(Resource.Id.countdown_text_view);
        Timer myTimer = new Timer(18000, 600, this);
        myTimer.Start();
    }

我的 CountDownTimer 实现:

class Timer : CountDownTimer
    {
        public int count = 30;
        SqueezeActivity squeezeActivity;

        public Timer(long totaltime, long interval, SqueezeActivity activity)
                                 : base(totaltime, interval)
        {
            squeezeActivity = activity;
        }

        public override void OnTick(long millisUntilFinished)
        {
            count--;
            String countStr = count.ToString();
            squeezeActivity.countdownTextView.Text = countStr;
        }

        public override void OnFinish()
        {
            squeezeActivity.StartActivity(typeof(AnotherActivity));
        }

    }

我是 Xamarin 开发的初学者,所以请原谅 :) 谢谢。

【问题讨论】:

  • 看看这个,我想你的问题可能和它有关:stackoverflow.com/questions/3588682/…
  • 我想知道您是如何构建并运行此代码的,因为您还没有实现 CountDownTimer 的 OnFinish() 方法。重写 CountDownTimer 类时需要实现 OnTick() 和 OnFinish()。
  • @Nestoraj,我已经阅读了那篇文章。他们建议延迟运行计时器的线程,但我不能延迟,因为我正在实现一种节拍器,它必须是精确的。我刚刚尝试使用以下代码在单独的线程中启动我的计时器:System.Threading.Thread thread = new System.Threading.Thread(new ThreadStart(runner.StartTimer));thread.Start();,但结果是相同的。经过一番调试,我发现在启动计时器后重新创建了活动。我在 Android 文档中没有发现任何有用的信息。我会继续寻找。

标签: android xamarin countdowntimer


【解决方案1】:

事实证明,调用两次的方法是由代码逻辑中的一个简单错误引起的——我调用了两次 StartActivity。所以它与倒数计时器无关。感谢您的回答。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多