请问一下android下软/弱引用的一个问题
PHP中文网
PHP中文网 2017-04-18 09:06:48
0
1
359

我对软/弱引用看了也不少博客,但是还是有一点疑问,尤其是android 2.3 之后的软/弱引用机制
尝试搜索无果后,来这里请教一下,问题应该很简单,但是对我来说很困惑有点绕不过来弯.

谢谢

ViewStub 和其他很多地方都有用到WeakReference
弱引用不是在系统GC的时候如果它只被一个软引用所引用,那么它将会被回收吗?

ViewStub的源码中,在inflate() 一个ViewStub的之后
同时将inflate()完毕的view添加至新创建的WeakReference 中,
那么这个view 不就只?被一个软引用所引用了吗?

如果这时系统GC 那么view是不是被回收了?那么下次想从WeakReference 中获取它的时候是不是又可能会为null ?从而导致错误?

或者说这种情况是不会被系统GC的? 望大鸟指教一下愚昧小弟

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(1)
PHPzhong

WeakReference 메커니즘에 대한 이해는 정확하지만 ViewStub 코드에 대한 이해는 올바르지 않다고 생각합니다

WeakReference는 ViewStub 및 기타 여러 곳에서 사용됩니다
약한 참조가 시스템 GC 중에 소프트 참조로만 참조되는 경우 재활용됩니까?

ViewStub의 소스 코드에서 ViewStub을 inflate()한 후
동시에 inflate()로 완성된 뷰를 새로 생성된 WeakReference에 추가하면
이 뷰는 단지 ? 소프트 참조로 참조되나요?

관련 객체의 참조 관계는 다음과 같습니다.

으아악 으아악

따라서 inflatedView는 여전히 강력하게 참조되며 GC가 되지 않습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿