Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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 安卓无线程睡眠_Android_Multithreading_Sleep - Fatal编程技术网

Android 安卓无线程睡眠

Android 安卓无线程睡眠,android,multithreading,sleep,Android,Multithreading,Sleep,如何在没有线程/可运行的情况下使代码休眠。我需要在android应用程序中修改布局,操作一个方法并再次反转布局更改。然而,这个方法包含计数器,每当我有一个内部类时,比如一个可运行的timertask或一些simular,变量需要是final,但是我不能增加计数器 ChangeLayout(); int round = 0; while (isPlaying && round < 24){ round++; int specificOccurrence =

如何在没有线程/可运行的情况下使代码休眠。我需要在android应用程序中修改布局,操作一个方法并再次反转布局更改。然而,这个方法包含计数器,每当我有一个内部类时,比如一个可运行的timertask或一些simular,变量需要是final,但是我不能增加计数器

ChangeLayout();

int round = 0;
while (isPlaying && round < 24){
    round++;
    int specificOccurrence = 0;
    while (isPlaying && specificOccurence < 8) {
        if (somethingSpecific){
            specificOccurence++;
        }
        // operates this while somehow with a 1 second break;
        // after that just continue.
        waitASecondSomehow();
    }
}

ReverseLayoutChanges();
ChangeLayout();
整轮=0;
while(显示和取整<24){
round++;
int-specificcurrence=0;
while(isplay和specificcurrence<8){
如果(某些特定的东西){
具体发生率++;
}
//以1秒的间隔运行此功能;
//然后继续。
waitasecond();
}
}
逆转改变();
您应该为此使用

    Timer mUiUpdateTimer;
    TimerTask uiUpdateTask; 
    int mistakes=0;
    int periodTime=1000;
    private void createTimeHandler()
    {

        mUiUpdateTimer = new Timer();

        final Handler uiUpdateHandler = new Handler();

        final Runnable uiUpdateRunnable = new Runnable() {

            @Override
            public void run() {
                   // other jobs
                    mistakes++;
            }
        };

        uiUpdateTask = new TimerTask() {

            @Override
            public void run() {
                //for safe UI handling 
                uiUpdateHandler.post(uiUpdateRunnable);

            }
        };

        mUiUpdateTimer.scheduleAtFixedRate(uiUpdateTask, 0, periodTime);


    }
你应该用这个

    Timer mUiUpdateTimer;
    TimerTask uiUpdateTask; 
    int mistakes=0;
    int periodTime=1000;
    private void createTimeHandler()
    {

        mUiUpdateTimer = new Timer();

        final Handler uiUpdateHandler = new Handler();

        final Runnable uiUpdateRunnable = new Runnable() {

            @Override
            public void run() {
                   // other jobs
                    mistakes++;
            }
        };

        uiUpdateTask = new TimerTask() {

            @Override
            public void run() {
                //for safe UI handling 
                uiUpdateHandler.post(uiUpdateRunnable);

            }
        };

        mUiUpdateTimer.scheduleAtFixedRate(uiUpdateTask, 0, periodTime);


    }

使用处理程序计划主线程上的工作,方法是:


上面的runnable是一个runnable实例,它执行您希望在主线程上执行的操作。每隔一段时间发布一次,可能会在runnable本身中重复发布,以安排下一次迭代。

使用处理程序计划主线程上的工作,方法是:


上面的runnable是一个runnable实例,它执行您希望在主线程上执行的操作。保持在每个时间间隔发布它,可能在runnable本身中重复,以安排下一次迭代。

只需在try块中添加bellow处理程序即可

new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                mistakes++; 
                }
            }

        }, 3000);

只需在try块中添加bellow处理程序

new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                mistakes++; 
                }
            }

        }, 3000);


将此代码放在不同的线程中…您正在主线程中执行整个代码,只需延迟一秒钟发布一个
Runnable
因为它需要是最终的,我不需要它,因为我需要修改它。添加一个
synchronized void IncrementErrors()
方法来为您实现这一点怎么样?如果
errors
volatile
的,那么您应该能够从不同的线程调用它,而不是调用
sleep()
使用
处理程序和
postDelayed(thisRunnable,1000)
从现在起一秒钟内安排另一个调用。将此代码放在不同的线程中…您正在主线程中执行整个代码只需延迟一秒钟发布一个
Runnable
因为它需要是最终的,我不需要它,因为我需要修改它。添加一个
synchronized void IncrementErrors()
方法来为您实现这一点怎么样?如果
errors
volatile
的,那么您应该能够从不同的线程调用它,而不是调用
sleep()
使用
处理程序和
postDelayed(thisRunnable,1000)
从现在开始安排另一个调用。这需要一个runnable,但是当我把它放在runnable中时,我可以更长时间地访问或修改错误变量。将错误变量移动到类成员。我编辑了我的示例。那就更复杂了。我在一段时间内得到了带有计数器的构造。这需要一个runnable,但当我将其放入runnable时,我可以更长时间访问或修改错误变量。将错误变量移动到类成员。我编辑了我的示例。那就更复杂了。我在一段时间内得到了带计数器的构造。这没有帮助,它使用runnable,使错误在没有最终语句的情况下不可访问。这没有帮助,它使用runnable,使错误在没有最终语句的情况下不可访问。