为了账号安全,请及时绑定邮箱和手机立即绑定

我在oncreate()中这样实现图片切换为什么只切换一次。而不是写在MainActivity中

//实现图片切换

new Thread()

{

public void run() {

handler.postDelayed(new Runnable(){

@Override

public void run(){

index++;

index=index%3;

imageView.setImageResource(images[index]);

}

}, 1000);

}

}.start();


正在回答

4 回答

0 .0 抱歉我最后一句话说错了,你无视就好

0 回复 有任何疑惑可以回复我~

你在进行图片更新之后没有让你的runable用handler.postDelayed()循环执行

在你的imageView.setImageResource(images[index]);后加上handler.postDelayed(this,1000)就行了

你的new Runable外面那个postDelayed作用是程序1秒后执行到Runable,执行完一次就回到主线程了,所以只更新一次

你的new Thread 已经是开启一个子线程了,又在Thread中new Runable,这是在子线程中又开启一个子线程去更新图片,我觉得没必要这样


0 回复 有任何疑惑可以回复我~

而且你在子线程中使用Handler没调用Looper.prepare()不会报错吗


0 回复 有任何疑惑可以回复我~
#1

逆鳞oz 提问者

没报错 确实只更新了一次,老师的那个方法为什么会一直更新,而我只会更新一次不是很明白 大神能帮我解释一下吗
2018-09-30 回复 有任何疑惑可以回复我~

你可以打印一下index看看,我觉得可能index只加了一,你这可能是老师说的在非UI线程也可以更新UI,但只能切换一次,一次后的延时活动就会执行到onResume()方法,viewRootImp是在onResume()中被创建的,非UI线程没有这个viewRootImp就停止切换了(仅供参考,个人想法可能有瑕疵)


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android面试常客Handler详解
  • 参与学习       54881    人
  • 解答问题       183    个

学Android开发,必学Handler,也是Android面试常客

进入课程

我在oncreate()中这样实现图片切换为什么只切换一次。而不是写在MainActivity中

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信