Android智能指针sp wp详解(4)

四、wp升级为sp的过程
  wp的定义包含了:sp<T> promote() const;
  template<typename T>
  sp<T> wp<T>::promote() const
  {
      return sp<T>(m_ptr, m_refs);
  }
  wp,sp互为友元类,这里promote就是以友元身份调用了sp<Binder>类的构造函数: sp(T* p, weakref_type* refs);
  template<typename T>
  sp<T>::sp(T* p, weakref_type* refs)
      : m_ptr((p && refs->attemptIncStrong(this)) ? p : 0)
  {
  }
  这里如果升级成功,那么将会产生一个sp对象指向目标对象,原来的wp仍然存在。
  如果升级不成功,返回NULL
  看看关键函数refs->attemptIncStrong(this)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxxfd.html