首页 > 解决方案 > Android Timer/CountDownTimer 在 onResume(

问题描述

我正在做一个小的 android 应用程序。我希望在应用程序停止时启动计时器或倒数计时器,并在一段时间(30 秒)后执行一个操作,在我的情况下关闭与服务器的连接。这很好用,问题是当您恢复应用程序时,计时器/倒数计时器会再次启动,我不希望这样。

这是我的代码:

@Override
protected void onStop() {

    super.onStop();
    desconexionTimer = new Timer();
    desconexionTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            new ThreadDesconexion(this).execute();
        }
    }, 30 * 1000);

} 

@Override
protected void onResume() {

    super.onResume();
    if(!ConexionServer.threIsConexion()){
         comeActivityLogin();
     }  
}

我尝试使用 CountDownTimer 并发生同样的情况。

@Override
protected void onStop() {

    super.onStop();
    new CountDownTimer(30000, 1000) {
          public void onTick(long millisUntilFinished) {
              Log.d("INFO","HELLO");
          }

          public void onFinish() {
              new ThreadDesconexion(this).execute()     }
   }.start();
} 

我做错了什么?或者有什么方法可以做到这一点?非常感谢您

标签: androidtimer

解决方案


使用以下代码在 onResume() 方法之前包含 onpause() ...

public long pause() {
  mPauseTime = mStopTimeInFuture - SystemClock.elapsedRealtime();
  mPaused = true;
return mPauseTime;
}


public long resume() {
    mStopTimeInFuture = mPauseTime + SystemClock.elapsedRealtime();
    mPaused = false;
    mHandler.sendMessage(mHandler.obtainMessage(MSG));
  return mPauseTime;
}

检查此链接以获取更多代码... https://android--examples.blogspot.com/2015/04/android-countdowntimer-start-pause.html


推荐阅读