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