Android Timer / CountDownTimer在onResume上执行(

时间:2018-06-01 05:26:49

标签: android timer

我正在做一个小型的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();
} 

我做错了什么?或者有办法做到这一点? 非常感谢你

2 个答案:

答案 0 :(得分:0)

我认为当您在onResume()方法中调用comeActivityLogin()时,您会启动一个新活动,并且由于活动生命周期,会自动调用onStop()方法。

答案 1 :(得分:0)

使用以下代码在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