运行此代码时出现错误,每次我在睡眠方法上设置时间时都会收到错误并关闭应用程序。
im = (ImageView) findViewById(R.id.imag1);
Thread t = new Thread() {
public void run() {
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
im.setImageResource(R.drawable.primeiro_misterio_gozoso07);
}
}
};
t.start();
我该如何解决?
答案 0 :(得分:0)
可以触摸或修改其视图的唯一线程是UI线程(MainThread),而您可以像这样使用CountDownTimer
:
CountDownTimer timer = new CountDownTimer(1000,5000)
{
@Override
public void onTick(long l){}
@Override
public void onFinish(){
im.setImageResource(R.drawable.primeiro_misterio_gozoso07);
};
}.start();
答案 1 :(得分:0)
您无法从非ui线程访问ui,您可以使用处理程序完成相同的操作。
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
im.setImageResource(R.drawable.primeiro_misterio_gozoso07);
}
}, 5000);
答案 2 :(得分:0)
您无法从后台线程访问UI。你只能通过主线程做。一个解决方法是
// SLEEP 5 SECONDS HERE ...
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// do your work here
}
}, 5000);