为什么无法循环

来源:3-6 Handler实现倒计时并优化内存

jyau

2017-08-09 00:49:13

暂时将变化的数值设定为9,然后消息处理里面的while如果没有,就会正常变为9,如果有的话,

点击一次之后,界面就无响应了,这是为什么?

http://climg.mukewang.com/5989eb640001242406870568.jpg

http://climg.mukewang.com/5989eb7500016d0d05990613.jpg

写回答

2回答

好帮手慕雪

2017-08-09

1)activity.mTime.setText(String.valueOf(value));不是activity.mTime.setText(String.valueOf(9));  2)修改whlie (value >= 0) {改成if(value > 0) 。3)修改message.arg1 = value;成message.arg1 = value-1;

0
hyau
h 啊,原来是while的问题,我明白了,谢谢老师
h017-08-09
共1条回复

好帮手慕雪

2017-08-09

为了方便测试你的问题,请把你的源代码粘贴一下。

0
hyau
h private static class MyHandler extends Handler{ final WeakReference<CountDownActivity> weakReference; MyHandler(CountDownActivity activity) { this.weakReference = new WeakReference<>(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); CountDownActivity activity = weakReference.get(); if (msg != null && msg.what == COUNT_DOWN_CODE) { int value = msg.arg1; activity.mTime.setText(String.valueOf(9)); while (value >= 0) { Message message = Message.obtain(); message.what = COUNT_DOWN_CODE; message.arg1 = value; sendMessageDelayed(message, 1000); } } } } }
h017-08-09
共2条回复

0 学习 · 1613 问题

查看课程