Java sleep()与Android上的网络任务结合使用时出现问题
我需要实现一个下载任务,它会发出一个字符串,我会在textview中显示该字符串。这个和这个配合得很好 由于数据保护,视图中的文本将在大约10秒后删除,这就是我的问题开始的地方 这是我的onPostExecute()方法:Java sleep()与Android上的网络任务结合使用时出现问题,java,android,sleep,Java,Android,Sleep,我需要实现一个下载任务,它会发出一个字符串,我会在textview中显示该字符串。这个和这个配合得很好 由于数据保护,视图中的文本将在大约10秒后删除,这就是我的问题开始的地方 这是我的onPostExecute()方法: 受保护的void onPostExecute(字符串结果){ txtOutput.setText(结果); int i=0; while(txtOutput.getText().toString().equals(“”&&iwhile循环没有问题;我尝试了以下代码,得到了完美
受保护的void onPostExecute(字符串结果){
txtOutput.setText(结果);
int i=0;
while(txtOutput.getText().toString().equals(“”&&iwhile
循环没有问题;我尝试了以下代码,得到了完美的结果
System.out.println("1");
int i = 0;
while (i <= 30) {
TimeUnit.SECONDS.sleep(1);
i++;
}
TimeUnit.SECONDS.sleep(10);
System.out.println("2");
40秒后:
2
请尝试此代码。要比较字符串,您需要使用
equals()
方法而不是=
。您也可以使用isEmpty()
,因此请尝试
protected void onPostExecute(String result) {
txtOutput.setText(result);
new Handler().postDelayed(new Runnable(){
public void run() {
txtOutput.setText("");
}
}, 10000);
}
也不要休眠Ui线程(更多)是否有一些日志?或者什么都没有?不要使用
=
而是equals()
或isEmpty()
请您解释一下:“直到显示输出”?当您调用setText()时,TextView将“立即”重新绘制。并且不要睡眠您的UI线程!onPostExecute在您的UI线程中执行。好的,这只是一个粗心的错误,不是主要问题。循环是我的想法,没有它就无法工作。删除循环。请参阅“编辑带处理程序”(不会阻止UI线程)嗯,我的问题在于网络任务和循环的结合。它们单独工作,但不能一起工作…@rohit:这是我尝试的第一件事:(伙计们,睡UI线程是个坏主意\!!用处理程序发布,它会工作的。
2
protected void onPostExecute(String result) {
txtOutput.setText(result);
try {
Thread.sleep(10000);
}catch(Exception e) { }
txtOutput.setText("");
}
protected void onPostExecute(String result) {
txtOutput.setText(result);
new Handler().postDelayed(new Runnable(){
public void run() {
txtOutput.setText("");
}
}, 10000);
}