“如何延迟”;runOnUiThread";在android中?

“如何延迟”;runOnUiThread";在android中?,android,Android,我已经实现了一种向服务器发送数据的方法,但我想将实现的函数失败消息延迟20毫秒左右 我的代码是 public void onFailure(Call call, IOException e) { call.cancel(); Log.d("FAIL", e.getMessage()); runOnUiThread(new Runnable() {

我已经实现了一种向服务器发送数据的方法,但我想将实现的函数失败消息延迟20毫秒左右

我的代码是

public void onFailure(Call call, IOException e) {
              
                call.cancel();
                Log.d("FAIL", e.getMessage());

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        TextView responseText = findViewById(R.id.responseText);
                        responseText.setText("Failed to Connect to Server. Please Try Again.");
                    }
                });
            }
您可以使用以下选项:

newhandler(Looper.getMainLooper()).postDelayed(newrunnable()){
@凌驾
公开募捐{
TextView-responseText=findViewById(R.id.responseText);
responseText.setText(“无法连接到服务器。请重试”);
}
}, 20)
newhandler(Looper.getMainLooper())
runOnUiThread{}
的操作基本相同,但执行方式略有不同。对于您的用例,第一个选项非常适合,因为它允许延迟。您可以在这里找到更多的解释:

您可以使用以下功能:

newhandler(Looper.getMainLooper()).postDelayed(newrunnable()){
@凌驾
公开募捐{
TextView-responseText=findViewById(R.id.responseText);
responseText.setText(“无法连接到服务器。请重试”);
}
}, 20)
newhandler(Looper.getMainLooper())
runOnUiThread{}
的操作基本相同,但执行方式略有不同。对于您的用例,第一个选项非常适合,因为它允许延迟。您可以在这里找到更多的解释:


这是否回答了您的问题?它在Runnuith上不起作用。延迟UI线程是你永远不应该做的事情。将失败方法放在一个单独的线程中,如ASyncTask,或者使用处理程序或类似程序,并在那里延迟它。@AHoneyBustard但这里没有人延迟UI线程,这里的情况更多的是延迟一个操作并在一段时间后执行,而不是冻结UI线程:)@Mariusz Brona我知道,但这个问题很容易被解释为其他问题……这能回答你的问题吗?它在Runnuith上不起作用。延迟UI线程是你永远不应该做的事情。将失败方法放在一个单独的线程中,如ASyncTask,或者使用处理程序或类似程序,并在那里延迟它。@AHoneyBustard但这里没有人延迟UI线程,这里的情况更多的是延迟一个操作并在一段时间后执行,而不是冻结UI线程:)@Mariusz Brona我知道,但这个问题很容易被解释为其他方式…你是复制粘贴它还是将其更改为可运行?你是复制粘贴它还是将其更改为可运行?