didi / DRouter

Android Router Framework
Apache License 2.0
743 stars 93 forks source link

回调式onActivityResult,前一个activity如果被finish了,activity会内存泄露 #21

Closed xingquanlu closed 2 years ago

xingquanlu commented 2 years ago

具体来说ActivityCompat2#sCallbackMap是静态map,key虽然是WeakReference,但value是ActivityCallback,通常是匿名内部类,会持有activity引用,目前sCallbackMap remove的时机只有onActivityResult,假如没机会执行onActivityResult就有泄露的可能

weigao123 commented 2 years ago

重新评估了一下,暂时回退了该修改,有部分用户反馈无法收到消息 考虑到当返回时,最终一定会移除这个callback,所以泄漏也只是暂时的

weigao123 commented 2 years ago

如果有好的建议,也欢迎交流