我可以在服务内部使用此代码来延迟调用方法,还是Handler()只能在UI线程内部使用?
在a内部延迟调用方法的最佳方法是service什么?
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 10000ms
socket.emit("CancelTravel");
}
}, 10000);
Run Code Online (Sandbox Code Playgroud)
Handler()只应该在 UI 线程中使用?
是的,Handler()仅在UI线程上有用,如果您想在普通线程上使用,则需要实现looper
示例代码
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 10000ms
socket.emit("CancelTravel");
}
}, 5000);
Run Code Online (Sandbox Code Playgroud)
你也可以使用 Timer
线程调度任务以供将来在后台线程中执行的工具。任务可以安排为一次性执行,或定期重复执行。
示例代码
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//Do something after 10000ms
socket.emit("CancelTravel");
}
}, 10000);
Run Code Online (Sandbox Code Playgroud)
在服务内部调用延迟方法的首选方法是什么?
| 归档时间: |
|
| 查看次数: |
4338 次 |
| 最近记录: |