一、背景
有个单例的工具类需要用到GLmapView的接口,为了使用方便吧GLmapView作为了单例对象的成员,后来发现在切后台回来会偶现调用GLmapView的接口会不生效。
二、问题原因
GLmapView和MapContainer是共生共存的,而MapContainer附着在NewMapActivity窗口上,在程序切后台时窗口有可能被onDestroy掉,MapContainer自然也被销毁了,待界面回到前台MapContainer和GLmapView都要被重新创建,所以此时操作的是一个应该被废弃的句柄,这样做不仅会走到错误的指针上,还有可能因为使用强引用导致引擎无法回收这个GLmapView.
三、埋坑
如果一定需要作为工具类的成员使用,首先应该把它转化为弱引用,其次每次在使用的时候都给它传一个最新的句柄