【发布时间】:2013-02-18 20:09:21
【问题描述】:
我想在TextView 上执行setText(),然后让活动休眠。
代码如下:
tv.setText("myText");
tv.invalidate(); // Doesn't work
pause(1000); // French for sleep
我的功能暂停:
public void pause(int seconds)
{
synchronized(this)
{
try {
this.wait(seconds);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
}
问题是 TextView 在睡眠前没有更新。我试图在我的 TextView 上调用 invalidate(),但它不起作用。
我有另一个可能的解决方案:创建一个新的线程来休眠活动,如果我的 TextView 的值仍然相同,则重新加载线程,否则调用我的函数pause()。但是有可能在 View 中获得我的 TextView 的真正价值吗?因为我可以得到新的文本:
tv.setText("myText");
System.out.println(tv.getText());
pause(1000); // French for sleep
而文本不会在视图中更新。
有什么想法吗?
【问题讨论】:
-
你需要睡眠/暂停功能做什么?锁定主线程从来都不是一个好主意,相反,如果您只想在一段时间后运行某些东西,则应该使用
new Handler().postDelayed(action)之类的东西。 -
@Jave 这是一种设置文本并让线程休眠以使该文本可读的算法。我没有找到其他解决方案。线程恢复后,正在显示另一个文本并休眠线程等。
标签: android multithreading textview sleep