如何在编辑文本焦点更改后的特定时间间隔(~120秒)后自动保存

时间:2014-11-11 04:24:45

标签: java android

我有一个我正在研究的应用程序,类似于记事本应用程序,专注于音乐家。我想在编辑文本框中将编辑文本置于焦点时每隔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()中重新启动它,但它会在后台陷入无限循环。谢谢!

3 个答案:

答案 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);