sleep() 与 Android 上的网络任务相结合的问题

Problems with sleep() in combination with a network task on Android

我需要执行一个下载任务,该任务发出一个字符串,我在文本视图中显示该字符串。这与 method.

完美配合

由于数据保护,视图中的文本应在 ca 之后删除。 10 秒,这就是我的问题开始的地方。

这是我的 onPostExecute() 方法:

protected void onPostExecute(String result) {
  txtOutput.setText(result);
  int i = 0;
  while (txtOutput.getText().toString().equals("") && i <= 30) {
    TimeUnit.SECONDS.sleep(1);
    i++;
  }
  TimeUnit.SECONDS.sleep(10);
  txtOutput.setText("");
}

有 while 循环,所以 10 秒直到输出显示才开始。

我的问题是从未显示输出。

/编辑:我调整了字符串比较

while循环没有问题;我尝试了以下代码并得到了完美的结果。

System.out.println("1");
int i = 0;
while (i <= 30) {
    TimeUnit.SECONDS.sleep(1);
    i++;
}
TimeUnit.SECONDS.sleep(10);
System.out.println("2");

我得到:

1

40 秒后:

2
    protected void onPostExecute(String result) {
        txtOutput.setText(result);
        try {
            Thread.sleep(10000);
        }catch(Exception e) { }
        txtOutput.setText("");
    }

试试这个代码。

要比较字符串,您需要使用 equals() 方法而不是 ==。你也可以使用 isEmpty() 所以试试

protected void onPostExecute(String result) {
    txtOutput.setText(result);

    new Handler().postDelayed(new Runnable(){
        public void run() {
            txtOutput.setText("");
        }
    }, 10000);        
}

也不要休眠 Ui 线程(更多 here