Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android studio如何在循环内设置延迟?_Android_Loops_Delay - Fatal编程技术网

android studio如何在循环内设置延迟?

android studio如何在循环内设置延迟?,android,loops,delay,Android,Loops,Delay,我有一个循环,我需要延迟,但我不能。 我已经试过两种方法,但似乎都不管用。 这是我试过的。我需要在单击按钮mNavigate时启动循环并延迟运行它。我在上面声明mNavMode为false mNavigate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "onClick: cli

我有一个循环,我需要延迟,但我不能。 我已经试过两种方法,但似乎都不管用。 这是我试过的。我需要在单击按钮mNavigate时启动循环并延迟运行它。我在上面声明mNavMode为false

     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");
            }
        }
    });

我已经使用了第二个选项,使用了
处理程序
,它应该可以工作。但是您的
while
条件似乎为false,在开始循环之前,您设置了
mNavMode=!mNavMode
,如果您的
mNavMode
事先设置为
true
,则不会执行循环体。

mNavMode在我添加之前设置为falsesorry@AntreasPapavasiliou尝试检查循环体是否已执行,以及如何知道延迟不起作用?在你的情况下,这仅仅是一秒钟,也许你没有注意到,试着增加它。当我运行我的应用程序并按下按钮时,我会在logcat中获得“while:running”的消息,每秒超过10次尝试将
Log
语句移动到
run
function@AntreasPapavasiliou可能您的
import
语句有误,确保您有
导入android.os.Handler