【问题标题】:android studio how to set delay inside a loop?android studio如何在循环内设置延迟?
【发布时间】:2018-05-07 18:57:00
【问题描述】:

我有一个需要延迟的 while 循环,但我不能。 我已经尝试了两种方法,但似乎都不起作用。 这是我尝试过的。当我单击按钮 mNavigate 以启动循环并延迟运行时,我需要。我在上面声明 mNavMode 是假的

     mNavigate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG, "onClick: clicked NAV icon");
            mNavMode = !mNavMode;
            while (mNavMode){
                Log.d(TAG, "while: running");
                new CountDownTimer(10000, 2500) {
                    public void onFinish() {
                        Log.d(TAG, "onFinish: finish");
                    }

                    public void onTick(long millisUntilFinished) {
                        if (mNavMode){
                            getDevLoc();
                        }
                        Log.d(TAG, "onTick: ticked "+millisUntilFinished);
                    }
                }.start();
            }
        }
    });



  mNavigate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG, "onClick: clicked NAV icon");
            mNavMode = !mNavMode;
            Handler handler1 = new Handler();
            while (mNavMode){
                handler1.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        getDevLoc();
                    }
                }, 1000 );
                Log.d(TAG, "while: running");
            }
        }
    });

【问题讨论】:

    标签: android loops delay


    【解决方案1】:

    我使用了Handler 的第二个选项,它应该可以工作。但您的while 条件似乎为假,就在开始循环之前您设置了mNavMode = !mNavMode,如果您的mNavMode 事先设置为true,那么您的循环体将永远不会执行。

    【讨论】:

    • mNavmode 设置为 false 之前我补充说现在很抱歉
    • @AntreasPapavasiliou 尝试检查循环体是否被执行,还有,你怎么知道延迟不起作用?在你的情况下只有一秒钟,也许你没有注意到它,试着增加它。
    • 当我运行我的应用程序并按下按钮时,我会在 logcat 中看到“while: running”每秒超过 10 次
    • 尝试在run函数中移动Log语句
    • @AntreasPapavasiliou 也许你的import 声明有误,请确保你有import android.os.Handler;
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2016-05-16
    • 2013-03-30
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多