public void interruptCountdown() { mActivity.runOnUiThread(() -> { mCountDown.setVisibility(View.GONE); mHandler.removeCallbacks(countdownRunnable); Log.e("NaviFragment", "interruptCountdown: 取消了倒计时啊"); }); } 有三条数据,现在正在倒计时5秒,我点击了第二条数据,执行了interruptCountdown() 方法,然后我在点击case R.id.btn_start_navi: interruptCountdown(); startNavi(); Log.e("NaviFragment", "onClick: 点击的"); break; 去执行导航,那么这个interruptCountdown() 方法执行了两遍,这个没有问题吧?可以优化一下吗?
时间: 2024-04-09 22:33:54 浏览: 51
可以优化一下,避免重复执行 `interruptCountdown()` 方法。你可以使用一个标志位来判断是否已经执行过 `interruptCountdown()` 方法,如果已经执行过,则不再重复执行。下面是一个可能的优化方案:
首先,在类的成员变量中添加一个标志位:
```java
private boolean isCountdownInterrupted = false;
```
然后修改 `interruptCountdown()` 方法:
```java
public void interruptCountdown() {
if (isCountdownInterrupted) {
return; // 如果已经中断过倒计时,则直接返回
}
mActivity.runOnUiThread(() -> {
mCountDown.setVisibility(View.GONE);
mHandler.removeCallbacks(countdownRunnable);
Log.e("NaviFragment", "interruptCountdown: 取消了倒计时啊");
});
isCountdownInterrupted = true; // 设置标志位,表示已经中断过倒计时
}
```
最后在点击事件中进行判断和调用:
```java
case R.id.btn_start_navi:
if (!isCountdownInterrupted) {
interruptCountdown();
}
startNavi();
Log.e("NaviFragment", "onClick: 点击的");
break;
```
这样就可以避免重复执行 `interruptCountdown()` 方法。
阅读全文