我希望在更改文本后定义一段时间后,textView会消失。
我不确定最好的方法是什么。
使用Thread.sleep(2000);
的问题在于它显然会使整个UI线程处于睡眠状态。在Thread.sleep(2000);
中使用AsyncTask
似乎是错误的。此外,如果用户离开需要由AsyncTask
更新的活动,则会导致问题。
必须有一种更清洁的方式来实现它。如果你知道的话:随意回答: - )
答案 0 :(得分:3)
您无需创建处理程序:
view.postDelayed(new Runnable(){
@Override
public void run()
{
view.setVisibility(View.GONE);
}
}, 10000);
答案 1 :(得分:1)
您可以使用Runnable
:
Handler myHandler = new Handler();
Runnable myRunnable = new Runnable() {
@Override
public void run() {
//Hide your view
}
};
然后在更改文本后,添加以下内容:
myHandler.postDelayed(myRunnable, TIME_IN_MILLISECONDS);
希望它有所帮助。
答案 2 :(得分:1)
你能做这样的事吗?
在您的活动中,创建一个处理程序:
Handler handler = new Handler()
{
@Override
public void handleMessage (Message msg)
{
if (msg.what == HIDE_VIEW)
hideView(); // defined elsewhere in your activitry
}
}
在您想要启动计时器时,请执行以下操作:
postDelayed (new Runnable()
{
@Override
public void run()
{
Message msg = handler.obtainMessage();
msg.what = HIDE_VIEW;
msg.obj = null;
handler.sendMessage (msg);
}
}, 10000);
不确定您是否需要此级别的异步性。
答案 3 :(得分:0)
对于对问题的错误解释感到抱歉,
使用
textView .setVisibility(View.INVISIBLE)
在处理程序中