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

时间:2015-10-21 12:00:50

标签: java android sleep

我需要实现一个下载任务,它发出一个我在textview中显示的字符串。这与此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秒钟不会开始直到显示输出。

我的问题是输出永远不会显示。

/ edit:我调整了字符串比较

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

试试这段代码。

答案 2 :(得分:0)

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

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

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

也不要睡觉Ui线程(更多here