https://www.yxhuang.com/2022/05/29/livedata-add-some-observer-error/
 这篇文章已经解释的很好了。
 其实在去年我写的文章,
 https://blog.csdn.net/jzlhll123/article/details/126593235
 中提到了,
其实不论是java或者kotlin,不引用外部的函数或者变量,都会导致此问题。
 kotlin lamda如果代码块中没有引导外部类,则会将lamda优化为全局单例。
 而java编译成了static实例。 参考(https://blog.csdn.net/weixin_36762615/article/details/106719262?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTRate-1-106719262-blog-102664893.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTRate-1-106719262-blog-102664893.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=2)
因此,才会导致liveData的Observer,已经绑定了。
在某些情况下,Fragment创建了二次;或者Activity,被回收再创建,之前的activity没有立刻finish,而新的已经onCreate。
 会导致这个单例被使用,而还没有来得及接触注册。
解决办法就是:让他引用内部的函数。或者改成object。
所以需要引起注意,当写liveData observer使用lamda的时候,要注意了。
另外备注:
 kotlin,通过android studio的kotlin查看字节码;而不能通过jclasslib,或者,jadx,均不能看到这个优化。