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

我对软/弱引用看了也不少博客,但是还是有一点疑问,尤其是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 のソース コードでは、inflate() の後、ViewStub
が同時に inflate() によって完成したビューを新しく作成された WeakReference に追加します。
このビューは単に? ソフト参照によって参照されていますか?

関連オブジェクトの参照関係は以下のとおりです。

リーリー リーリー

したがって、inflatedView は引き続き強く参照され、GC されません

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート