【发布时间】:2012-02-05 00:23:39
【问题描述】:
我需要setTimeOut(call function(),milliseconds); for android 的等效代码。
setTimeOut(call function(),milliseconds);
【问题讨论】:
标签: java javascript android equivalent
我需要setTimeOut(call function(),milliseconds); for android 的等效代码。
setTimeOut(call function(),milliseconds);
【问题讨论】:
标签: java javascript android equivalent
您可能想查看TimerTask
既然你再次提出这个问题,我想提出一个不同的建议,那就是Handler。它比 TimerTask 使用起来更简单,因为您不需要显式调用 runOnUiThread,因为只要它是在 UI 线程上创建的,或者您使用其构造函数中的主循环器创建它,处理程序就会与 UI 线程相关联。它会像这样工作:
private Handler mHandler;
Runnable myTask = new Runnable() {
@Override
public void run() {
//do work
mHandler.postDelayed(this, 1000);
}
}
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
mHandler = new Handler(Looper.getMainLooper());
}
//just as an example, we'll start the task when the activity is started
@Override
public void onStart() {
super.onStart();
mHandler.postDelayed(myTask, 1000);
}
//at some point in your program you will probably want the handler to stop (in onStop is a good place)
@Override
public void onStop() {
super.onStop();
mHandler.removeCallbacks(myTask);
}
在您的活动中使用处理程序需要注意一些事项:
【讨论】:
这是我在当前项目中使用的代码。正如马特所说,我使用了 TimerTask。 60000 是毫秒。 = 60 秒。我用它来刷新比赛分数。
private void refreshTimer() {
autoUpdate = new Timer();
autoUpdate.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
adapter = Score.getScoreListAdapter(getApplicationContext());
adapter.forceReload();
setListAdapter(adapter);
}
});
}
}, 0, 60000);
【讨论】:
underscore-java 库中有 setTimeout() 方法。
代码示例:
import com.github.underscore.U;
import java.util.function.Supplier;
public class Main {
public static void main(String[] args) {
final Integer[] counter = new Integer[] {0};
Supplier<Void> incr =
() -> {
counter[0]++;
return null;
};
U.setTimeout(incr, 100);
}
}
该函数将在 100 毫秒内启动一个新线程。
【讨论】:
作为 Valentyn 使用 java 下划线回答的延续:
给gradle添加依赖:
dependencies {
compile group: 'com.github.javadev', name: 'underscore', version: '1.15'
}
Java:
import com.github.underscore.lodash.$;
$.setTimeout(new Function<Void>() {
public Void apply() {
// work
return null;
}
}, 1000); // 1 second
【讨论】: