Skip to main content
  1. Works/

第三方登陆会请求两次的问题

·1 分钟
WorkNote

通过bug复现可以得到,该方法确实被调用两次,有的时候甚至会更多,导致这个bug的主要原因是该方法的调用是通过“发送通知”调用,也就是广播,所以只要该通知发出,注册个该通知的对象,都能接收得到,所以就出现会调用两次,甚至多次。代码中存在退出登陆,重新构建新的登陆页面,而旧的页面没有被释放,这样就会存在页面上虽然只展示一个页面,但内存中实际存在两个对象。解决该bug则需要释放调旧的对象,以及考虑这个方法的调用真的需要使用通知的方式吗?从一开始使用通知的角度来讲,确实这种方式很方便,但后期接手的人更改这里的业务逻辑或许因为没考虑到这个问题,拷贝了一份代码,改改做新需求,这就会导致意想不到的问题存在。我梳理了一下调用逻辑,其实只需要使用回调来处理调用。并且整理的代理对象,让只要写一份的代码,就只写一份。