我有一个我正在研究的应用程序,类似于记事本应用程序,专注于音乐家。我想在编辑文本框中将编辑文本置于焦点时每隔2分钟自动保存文本内容(触摸文本框)。我尝试使用 CountDownTimer ,但我需要帮助,每2分钟为编辑文本循环一次,并在调用应用程序的 onPause()时将其终止。
new CountDownTimer(120000, 1000) {
public void onTick(long millisUntilFinished) {
//every 1000 millis
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
//when 2 minutes is reached
mTextField.setText("done!");
}
}.start();
我可以通过再次调用 start()在 onFinish()中重新启动它,但它会在后台陷入无限循环。谢谢!
答案 0 :(得分:1)
我有一个我正在研究的应用程序,类似于记事本 应用程序,适用于音乐家。我想每次自动保存他们的文字内容 编辑文本框2分钟时,他们将编辑文本置于焦点 (触摸文本框)。
为此你可以使用Timer -
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@SuppressWarnings("unchecked")
public void run() {
try {
"Your function call "
}
catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, "Timer value");
完成工作后,您可以通过 -
停止计时器if(timer != null) {
timer.cancel();
timer = null;
}
希望这有帮助!
答案 1 :(得分:1)
您最好使用Threads
而不是CounterdownTimer
。阅读Threads。或者,如果您只想将自己限制为Android,请使用AsyncTasks
答案 2 :(得分:1)
您可以使用Runnable和handler,
这里是示例检查,
Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
try {
write your code
handler.postDelayed(runnable,1200000);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
};
handler.postAtTime(runnable);