[英]Time in java/android + crashing app
好的伙计们,我正在制作一个不断崩溃的安卓计时器应用程序。 我正在使用一个计时器,它在25分钟后重置,然后重新开始。 这是通过onclicklistener的开始按钮中的for循环完成的。 在循环中我有另一个while循环,其中我通过语句为长类型变量赋值经过的时间
// for循环中while循环的内容
while(found==1){
temp = chrono.getBase() + SystemClock.elapsedRealtime();
if(temp == 25*60*1000){
found--;
}
我乘以1000因为时间是以毫秒为单位测量的? 我做错了还是别的什么的。 谢谢。
while循环可能会阻塞主UI线程,直到found==1
条件found==1
。 您可能需要的是Timer
和TimerTask
。 或者,按照本文的建议,您可以使用处理程序启动Runnable,以每50或100毫秒更新计时器时间。 这是一个例子(未经链接的文章测试和改编!):
private Handler handler = new Handler();
handler.postDelayed(runnable, 100);
private Runnable runnable = new Runnable() {
@Override
public void run() {
/* do what you need to do */
boolean isTimerReady=foobar();
/* and here comes the "trick" */
if (!isTimerReady) handler.postDelayed(this, 100);
}
};
这每100毫秒开始foobar()
。 foobar()
应该返回一个布尔值 - 基本上是你的while循环中的计算,并更新用户界面。 一旦foobar()
返回true, Runnable
就不会重新启动。
你正在杀死CPU,可能永远不会停止。 温度恰好为25 * 60 * 1000的可能性非常低。 将“==”检查更改为“> =”。 另外,对于found,使用“boolean”:它更有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.