我在oncreate()中這樣實(shí)現(xiàn)圖片切換為什么只切換一次。而不是寫(xiě)在MainActivity中
//實(shí)現(xiàn)圖片切換
new Thread()
{
public void run() {
handler.postDelayed(new Runnable(){
@Override
public void run(){
index++;
index=index%3;
imageView.setImageResource(images[index]);
}
}, 1000);
}
}.start();
2018-10-23
0 .0 抱歉我最后一句話說(shuō)錯(cuò)了,你無(wú)視就好
2018-10-23
你在進(jìn)行圖片更新之后沒(méi)有讓你的runable用handler.postDelayed()循環(huán)執(zhí)行
在你的imageView.setImageResource(images[index]);后加上handler.postDelayed(this,1000)就行了
你的new Runable外面那個(gè)postDelayed作用是程序1秒后執(zhí)行到Runable,執(zhí)行完一次就回到主線程了,所以只更新一次
你的new Thread 已經(jīng)是開(kāi)啟一個(gè)子線程了,又在Thread中new Runable,這是在子線程中又開(kāi)啟一個(gè)子線程去更新圖片,我覺(jué)得沒(méi)必要這樣
2018-09-29
而且你在子線程中使用Handler沒(méi)調(diào)用Looper.prepare()不會(huì)報(bào)錯(cuò)嗎
2018-09-29
你可以打印一下index看看,我覺(jué)得可能index只加了一,你這可能是老師說(shuō)的在非UI線程也可以更新UI,但只能切換一次,一次后的延時(shí)活動(dòng)就會(huì)執(zhí)行到onResume()方法,viewRootImp是在onResume()中被創(chuàng)建的,非UI線程沒(méi)有這個(gè)viewRootImp就停止切換了(僅供參考,個(gè)人想法可能有瑕疵)