理论教育 Android系统中的轻量级指针技术

Android系统中的轻量级指针技术

时间:2023-06-19 理论教育 版权反馈
【摘要】:在Android系统中,轻量级指针通过引用计数技术来维护对象的声明周期。支持轻量级指针的对象必须继承自基类LightRefBase,类LightRefBase在文件frameworks\native\include\utils\RefBase.h中定义,具体实现代码如下。另外,类LightRefBase还通过成员函数incStrong和decStrong维护引用计数器的值,这两个函数被智能指针调用。在函数decStrong中,如果当前引用计数值为1,那么当减1后就会变为0,这表示删除这个对象。在Android系统中,和LightRefBase引用计数配套使用的智能指针类是sp,sp是轻量级指针的实现类。

Android系统中的轻量级指针技术

在Android系统中,轻量级指针通过引用计数技术来维护对象的声明周期。支持轻量级指针的对象必须继承自基类LightRefBase,类LightRefBase在文件frameworks\native\include\utils\RefBase.h中定义,具体实现代码如下。

由上述代码可以看出,类LightRefBase只引用一个计数器成员变量mCount,其初始化值为0。另外,类LightRefBase还通过成员函数incStrong和decStrong维护引用计数器的值,这两个函数被智能指针调用。在函数decStrong中,如果当前引用计数值为1,那么当减1后就会变为0,这表示删除这个对象。

在Android系统中,和LightRefBase引用计数配套使用的智能指针类是sp,sp是轻量级指针的实现类。在文件frameworks\native\include\utils\RefBase.h中,sp的具体实现代码如下。

类sp有如下两个构造函数:

普通构造函数。(www.daowen.com)

拷贝构造函数。

上述两个构造函数在文件frameworks\native\include\utils\RefBase.h中实现,具体实现代码如下。

类sp中包含了析构函数,功能是调用m_ptr的成员函数decStrong减少对象的引用计数值。函数decStrong在类LightRefBase中定义,当引用计数减1后变成0时会自动删除这个对象。定义析构函数的实现代码如下。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈