当前位置: 首页 > 面试题库 >

取消CountDownTimer Android Java的问题

丌官子安
2023-03-14
问题内容

当我通过按BACK按钮(调用onBackPressed())关闭应用程序时,CountDownTimer它不会停止,直到完成计数为止。我怎样才能把CountDownTimer
cancel(); 在我的onBackPressed()

因为,当我退出应用程序时(如下面的说明所示),我不再想要在屏幕上进行举杯了。

在我的代码之上:

boolean network_connected = false;

我的是什么onCreate()

if (check_network.isInternetAvailable(this)) {
    network_connected = true;
    new connect_task_main().execute("");
} else {
    network_connected = false;
}

if (network_connected == false) {
    new CountDownTimer(11000, 1000) {
        public void onTick(long millisUntilFinished) {
            global.toast.setText("No Internet Connection!" + "\n" + "Automatic Refresh In: " + millisUntilFinished / 1000); //set text for toast
            global.toast.show(); //show toast
        }

        public void onFinish() {
            if (network_connected == false) {
                global.cancel_toast(0); //stop all toasts
                finish(); //quit activity
                startActivity(new Intent(main_activity.this, main_activity.class)); //start activity
            } else {
            }
        }
    }.start(); //start the countdowntimer
} else {
    network_connected = true;
}

onBackPressed() 方法

@Override
public void onBackPressed() {
    if (page_number > global.page_number_min) { //does not matter
        page_number--; //does not matter
        global.cancel_toast(0); //stop all toasts
        network_connected = true;
        finish();
    } else {
        global.cancel_toast(0);
        network_connected = true;
        finish(); //quit activity
        super.onBackPressed(); //quit application
    }
}

谢谢。


问题答案:

创建一个CountDownTimer例如的全局对象。

在main_activity类的顶部设置:CountDownTimer timer;之后,执行以下操作。

timer = new CountDownTimer(11000, 1000) 
        {
           public void onTick(long millisUntilFinished) 
           {
             global.toast.setText("No Internet Connection!" + "\n" + "Automatic Refresh In: " + millisUntilFinished / 1000); //set text for toast
             global.toast.show(); //show toast
           }

           public void onFinish() 
           {
              if (network_connected == false) 
              {
                 global.cancel_toast(0); //stop all toasts
                 finish(); //quit activity
                 startActivity(new Intent(main_activity.this, main_activity.class)); //start activity
              }
              else 
              {
              }
          }
      }.start(); //start the countdowntimer
}

onBackPressed呼吁timer.cancel();

@Override
public void onBackPressed() 
{
  if (page_number > global.page_number_min) 
  { //does not matter
    page_number--; //does not matter
    global.cancel_toast(0); //stop all toasts
    network_connected = true;
    finish();
  }
  else
  {
    global.cancel_toast(0);
    network_connected = true;
    finish(); //quit activity
    super.onBackPressed(); //quit application
  }

 timer.cancel();
}


 类似资料:
  • 这是我的axios依赖: 这是我的代码 这段代码有什么问题么?请求并不会取消

  • 我有一个XML要与JAXB解组。如果我从元素中删除所有名称空间属性,代码运行良好,但是如果我保留名称空间属性的话,在解组后会得到一个空对象。 XML是这样的: 我的动物豆是这样的: 猫豆就像: 在运行时,我得到一个空对象。我试图从属性中删除< code>"z:",得到了这个异常: 如果我从猫和动物中删除命名空间,我会得到这个例外: 下面是解组的最终代码。最后一行给出了一个空指针异常 我不确定如何处

  • 请求地址 https://api.es.xiaojukeji.com/river/Approval/cancel 返回数据格式 JSON 请求类型 POST 请求参数 参数名称 数据类型 必选 说明 client_id string yes 申请应用时分配的AppKey access_token string yes 授权后的access token timestamp string yes 当前

  • 我创建了一个 xsd,并将其与 jaxb 插件(如波纹管)一起使用: 插件: 它给我生成了这样的类: 我使用这个Camel路径来取消xml的共享: 但是当我运行我的应用程序时,我得到了下面的错误... [路线2][未封印1][未封印org.apache.camel.model.dataformat.JaxbDataFormat@7aff8796][ 0] 堆栈跟踪-----------------

  • 在ngOnDestory中,我取消了两个订阅,但仍然得到前面的错误。 现在我几乎可以肯定问题出在这行:即使我在注销之前取消了proposalSubscription和chatSubscription的订阅,但仍然会出现错误。有没有解决这个问题的方法?而且,我对RXJ和操作符没有太多的经验。有没有操作符可以用来避免这种嵌套订阅? 提前道谢。

  • Kafka在2个代理和1个Zookeeper实例中的奇怪问题,都在AWS上。每个代理都位于一个单独的可用性区域(AZ)。孤独的动物园管理员实例与其中一个代理共享AZ。我正试图模拟一种滚动重启的情况,在这种情况下,即使一个代理出现故障,我们也希望数据流向Kafka。 当另一个 AZ 代理被移除时,我能够看到向与 Zookeeper 共享 AZ 的代理平稳过渡。但是,当我删除与 Zookeeper 共