gpt4 book ai didi

java - 即使在调用cancel之后,倒数计时器的onTick方法仍然被调用

转载 作者:行者123 更新时间:2023-12-02 04:05:51 25 4
gpt4 key购买 nike

我正在尝试加载一些数据。 ID 数据在 20 秒内加载,然后我开始新的 Activity ,否则我将通过提供一些相关消息来完成。我启动了一个倒计时器来记录时间。加载数据后,我想停止计时器。我有以下类(class):

public class SplashActivity extends AppCompatActivity {

private Context mContext;
private Boolean mDataLoadedFromServer = false;
private String mJSONData;
private SplashTimerForLoadingMasterDataForAllChannels mTimer;

private void stopTimer(){
mTimer.cancel();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.activity_splash);
mTimer = new SplashTimerForLoadingMasterDataForAllChannels(20000,1000);
mTimer.start();
}



class SplashTimerForLoadingMasterDataForAllChannels extends CountDownTimer {

public SplashTimerForLoadingMasterDataForAllChannels(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
Log.d("testTimer", "SplashTimerForLoadingMasterDataForAllChannels");
//SomE AsyncTAsk
LoadData loaddata = new LoadData();
loaddata.execute();
//SomE AsyncTAsk
}
@Override
public void onTick(long millisUntilFinished) {
Log.d("testTimer", "onTick millisUntilFinished = " + millisUntilFinished + " mDataLoadedFromServer = " + mDataLoadedFromServer);
//mDataLoadedFromServer is modified once Data is loaded in AsyncTask
if(mDataLoadedFromServer) {
stopTimer();
}
}

@Override
public void onFinish() {
Log.d("testTimer", "onFinish");
if(mDataLoadedFromServer) {
mDataSavedAndNextActivityLaunched = true;
if (Utils.checkIfUserLoggedIn()) {
mContext.startActivity(new Intent(mContext, ABCACtivity.class));
} else {
mContext.startActivity(new Intent(mContext, XYZActivity.class));
}
finish();
}
}

}



}

我在本地方法调用中取消了它,但 onTick 仍然不断被调用。有人可以帮忙吗?

最佳答案

如果我从 onTick() 或 onFinish() (即从内部定时器取消它),基本上计数器不会简单地停止。

但是,如果我从计时器之外的任何点执行此操作,它很容易停止。

所以当我的数据完全加载时...我调用了timer.cancle(),它成功了。

但是我仍然不明白为什么如果我们从计时器方法内部做同样的事情它不起作用。

关于java - 即使在调用cancel之后,倒数计时器的onTick方法仍然被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com