`
java-admin
  • 浏览: 1384327 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

android RefBase

阅读更多

    RefBase & sp & wp 实现了类似于智能指针的工作,从而实现了垃圾自动回收的机制。代码见
frameworks/base/include/utils/RefBase.h
1.sp并不是所常见的smart pointer,而是strong pointer。
构造函数:
template<typename T>
sp<T>::sp(T* other)
    : m_ptr(other)
{
    if (other) other->incStrong(this);
}

析构函数:
template<typename T>
sp<T>::~sp()
{
    if (m_ptr) m_ptr->decStrong(this);
}

incStrong()会在构造或复制后,增加强引用1次。而每次delete一个sp对象时,sp对象的强引用就会减少1次。

当对象的强引用次数为0的时候这个对象就会被自动释放掉。

2.wp

wp即weak pointer,实现和sp类似,createWeak()及decWeak()类似于incStrong()及decStrong(),进行弱应用的计数。同时,wp和sp都提供了进行双向转换的方法。

 

 

 

 

http://forest606.blog.163.com/blog/static/134450089201001811187943/

 

 

 

 

分享到:
评论

相关推荐

    Android应用程序框架——智能指针 系列文章源代码

    在Android应用程序开发中,智能指针是用于管理内存的重要工具,尤其是在C++ Native层的编程中。本系列文章源代码主要探讨了如何在Android环境中利用智能指针来优化内存管理和防止内存泄漏。智能指针是一种自动管理...

    深入理解Android 卷1.pdf

    第5章讲解了Android系统中常用的类,包括sp、wp、RefBase、Thread等类,同步类,以及Java中的Handler类和Looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以MediaServer为切入点,对Android...

    深入理解Android:卷I

    - **sp、wp、RefBase、Thread等类**:第五章介绍了Android系统中常用的类如sp、wp、RefBase、Thread等,以及同步类、Handler和Looper机制,这些都是理解和开发Android应用的基础。 #### 6. Binder机制全面解析 - **...

    android智能指针详解[收集].pdf

    `RefBase`类是Android智能指针的核心,它维护了一个弱引用和强引用的计数。`RefBase`有两个重要的内部类:`weakref_impl`和`refcounted_object`(在某些版本中是`refcounted_refptr`)。`weakref_impl`管理弱引用,...

    深入理解Android:卷2

    第5章讲解了Android系统中常用的类,包括sp、wp、RefBase、Thread等类,同步类,以及Java中的Handler类和Looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以MediaServer为切入点,对Android...

    Android_WP_SP浅析

    通过理解RefBase的引用计数机制以及sp和wp的用法,开发者可以更安全、高效地编写Android的Native代码。在调试过程中,尤其是Win32环境下,利用debug工具查看引用计数可以帮助定位潜在的内存问题。

    深入理解Android卷1

    第5章讲解了Android系统中常用的类,包括sp、wp、RefBase、Thread等类,同步类,以及Java中的Handler类和Looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以MediaServer为切入点,对Android...

    深入理解Android:卷I--详细书签版

    第5章讲解了android系统中常用的类,包括sp、wp、refbase、thread等类,同步类,以及java中的handler类和 looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以mediaserver为切入点,对...

    Android垃圾回收实质内容解析学习教案.pptx

    首先,所有Android的类都会隐式地继承自`refbase`类。`refbase`提供了垃圾回收所需的功能,使得每个对象在声明后都有能力自我释放。智能指针(如sp)不仅是一个指向对象的指针,它还维护着对象的强引用和弱引用计数...

    深入理解Android卷1全

    5.2 以“三板斧”揭秘RefBase、sp和wp / 96 5.2.1 第一板斧——初识影子对象 / 96 5.2.2 第二板斧——由弱生强 / 103 5.2.3 第三板斧——破解生死魔咒 / 106 5.2.4 轻量级的引用计数控制类LightRefBase / 108 5.2.5 ...

    Android垃圾回收实质内容解析PPT学习教案.pptx

    首先,所有在Android中的类都隐式地继承自`refbase`类,因为`refbase`提供了实现垃圾回收所需的功能。`refbase`维护着对象的强引用和弱引用计数,当强引用计数降为0时,对象会被自动释放。这意味着,实际上,对象...

    ubuntu下编译android4.0汇编.pdf

    在编译过程中可能会出现一些错误,例如 make: * [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] error 1 等问题,可以通过修改 Android.mk 文件来解决。 在 Ubuntu 10.04 64 位系统...

    《深入理解Android:卷I》试读本

    第5章讲解了Android系统中常用的类,包括sp、wp、RefBase、Thread等类,同步类,以及Java中的Handler类和Looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以MediaServer为切入点,对Android...

    Android垃圾回收实质内容解析PPT教学课件.pptx

    首先,Android的对象几乎都会继承`refbase`类,因为`refbase`提供了垃圾回收所需的功能。每个对象都有强引用和弱引用的计数器,当强引用计数为0时,对象会被自动释放。这里的"智能指针"实际上就是对象本身,它们能够...

    ubuntu下编译android4.0.pdf

    如果在32位系统中遇到错误,例如`[out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] error 1`,可以通过编辑`frameworks/base/libs/utils/Atomic.h`并重新编译来解决。 编译过程可能...

    Ubuntu下Android源码修改、编译及运行、launcher定制.docx

    make: * [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1 解决方法: 1. 打开 terminal,输入以下命令: $ gedit frameworks/base/libs/utils/Android.mk 2. 修改 LOCAL_...

Global site tag (gtag.js) - Google Analytics