【发布时间】: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