1、背景概述
RefBase是Android中所有对象的始祖,类似于MFC中的CObject或者Java中的Object对象。
2、影子对象
文件的位置为:framework/base/libs/utils/RefBase.cpp
RefBase::RefBase()
: mRefs(new weakref_impl(this))
{
// mRefs是RefBase的成员变量,类型是weakref_impl,我们暂且称之为影子对象。
// LOGV("Creating refs %p with RefBase %p\n", mRefs, this);
}
这里是一个影子对象的构造
weakref_impl(RefBase* base)
: mStrong(INITIAL_STRONG_VALUE)
, mWeak(0)
, mBase(base)
, mFlags(0)
, mStrongRefs(NULL)
, mWeakRefs(NULL)
, mTrackEnabled(!!DEBUG_REFS_ENABLED_BY_DEFAULT)
, mRetain(false)
{
//LOGI("NEW weakref_impl %p for RefBase %p", this, base);
}
3、RefBase
4、SP的深入理解
5、WP的深入理解