多线程传递对象造成的数据脏读
当从子线程传递object实例引用到handler,再通过handler传给主线程时会出现数据状态变更回调多次的情况
原因:1.多线程操作这个object对象,当主线程拿到这个对象时,可能被子线程改值了
2.每一次handler发消息不是立刻发送的,而是存放在消息队列中,如果消息队列没有及时处理,引用对象变化也会导致数据脏读
解决方案:
1.在handler.sendMessage后sleep一段时间(10ms),可以保证消息发送后主线程及时收到
2.减少handler发送消息的次数,比如限制两次消息发送最小时间间隔1s