我正在开发一款Android应用,我有countdown timer
onFinish()
这样做 -
double initial_time = 0.0;
double countup;
public void onFinish() {
startTimer();
}
public void startTimer(){
//Start the scheduled timer
Log.d("hi","crash app 0");
Early_Delay_Display.setText(R.string.Departure_Delay);
rootView.invalidate();
Timer timer = new Timer();
timer.scheduleAtFixedRate(
new java.util.TimerTask() {
@Override
public void run() {
Log.d("hi","crash app 1" + initial_time);
countup = 0.0 + initial_time;
Log.d("hi","crash app 2" + initial_time + "---------" + countup);
Early_Delay_Time.setText(String.valueOf(countup));
rootView.invalidate();
initial_time = initial_time + 0.5;
}
},
1000, 30000//delay,period
);
}
基本上使用这个计时器,我想每30秒显示0.5,1.0,1.5但应用程序崩溃。
日志是 -
crash app 0
crash app 1 0.0
crash app 2 0.0---------0.0
此后应用程序崩溃
答案 0 :(得分:0)
android中有特殊的CountDownTimer,所以你可以像提到here
一样使用它答案 1 :(得分:0)
我猜您的活动已被破坏,然后计时器会让您的应用崩溃。
答案 2 :(得分:0)
我找到了答案。你永远不能更新线程的UI。相反,你可以这样做 -
public void startUpCounting(){
//Start the scheduled timer
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
countup = 0.0 + initial_time;
Log.d("hi","crash app 2" + initial_time + "---------" + countup);
mHandler.obtainMessage(1).sendToTarget();
initial_time = initial_time + 0.5;
}
}, 0, 1000);
}
public Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
Early_Delay_Time.setText(String.valueOf(countup));
rootView.invalidate();
}
};