sp/wp是模块类, 超载操作符,比如=,->, * RefBase是Android C++类的父类 weakref_impl是weakref_type的子类 网上有资料讲到RefBase可以轻易实现单例模式,想了很久还是没想明白,RefBase跟单例应该是没有直接关系的,最后想到一个重要的点,单例 ...
转载
2021-07-23 09:18:00
238阅读
2评论
本地代码中使用Java对象通过使用合适的JNI函数,你可以创建Java对象,get、set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数。JNI通过ID识别域和方法,一个域或方法的ID是任何处理域和方法的函数的必须参数。下表列出了用以得到静态(static)和实例(instance)的域与方法的JNI函数。每个函数接受(作为参数)域或
首先RefBase在android的c++部分是作为一个所有类的基类,其作用跟Java中的Object类似
这个类中存在一个私有成员:
weakref_impl* const mRefs;
(weakref_impl是weakref_type的子类) 这个mRefs是“影子对象”,是管理一个对象的引用计数的关键
RefBase的构造中mRefs(n
转载
2024-01-03 14:31:20
32阅读
路径systemcorelibutilsincludeutilsRefBase.hnamespace android 命名空间是androidclass TextOutput;// 这是前置声明(Forward declaration),前置声明只能作为指针或引用,不能定义类的对象,自然也就不能调用对象中的方法了。TextOutput& printWeakPointer(TextOutpu
转载
2023-05-31 15:31:24
91阅读
个人觉得sp和wp实际上就是android为其c++实现的垃圾自动回收机制,具体到内部实现,sp和wp实际上只是一个实现垃圾回收功能的接口而已,比如说对*,->的重载,是为了其看起来跟真正的指针一样,而真正实现垃圾回收的是RefBase这个基类。这部分代码的目录在:/frameworks/base/incl
转载
2023-10-27 19:53:36
61阅读
简介 RefBase是Android中所有对象的始祖,类似MFC中的CObject及Java中的Object对象。在Android中,RefBase结合sp和wp,实现了一套通过引用计数的方法来控制对象生命周期的机制。RefBase的子类在构造一个实际对象的同时,还会悄悄地构造一个影子对象. sp是strong pointer, wp是weak pointer, LightRefBase是
转载
2023-07-12 21:39:08
51阅读
rebase命令可以用于分支的合并,可能有些朋友会觉得,分支合并不是可以使用merge命令吗,那么rebase命令和merge命令的区别是什么呢?
rebase命令在效果上和 merge 命令效果类似,但是原理决然不同,下面我们分别来看看
转载
2023-06-19 07:55:16
70阅读
Android中通过引用计数来实现智能指针,并且实现有强指针与弱指针。由对象本身来提供引用计数器,但是对象不会去维护引用计数器的值,而是由智能指针来管理。要达到所有对象都可用引用计数器实现智能指针管理的目标,可以定义一个公共类,提供引用计数的方法,所有对象都去继承这个公共类,这样就可以实现所有对象都可以用引用计数来管理的
原创
2023-06-22 00:12:32
359阅读
文章目录1、RefBase简介2、RefBase源码分析3、RefBase使用注意事项4、总结 1、RefBase简介什么是RefBase?RefBase是Android中的一个C++类,用于内存管理,相关的类还包括LightRefBase、sp和wp。在Android源码中的许多地方都可以看到RefBase的使用,那么,为什么RefBase这么受欢迎呢?这源于C++的指针与动态内存管理,指针本
转载
2024-01-12 01:52:49
78阅读
用MediaPlayer说明sp的实现。sp是一个模板类,T是RefBase的子类。仅仅要继承于RefBase的类都能够使用sp。binder类也继承RefBase类,binder的实现离不开RefBase。 用例如以下代码说说我遇到的疑惑。 201 static sp<MediaPlayer> g
转载
2016-04-18 09:18:00
283阅读
2评论
sp 和 wp 类模板 以及RefBase类的代码在frameworks/base/include/utils/RefBase.h 和 frameworks/base/libs/utils/RefBase.cpp 中。
sp是Strong pointer ,wp是Weak pointer , 是实现android C++ 自动内存分配和回收避免内存泄漏的机制,类似于java的
转载
2024-10-10 20:06:23
27阅读
3. 强指针
强指针所使用的引用计数类为RefBase,它LightRefBase类要复杂多了,所以才称后者为轻量级的引用计数基类吧。我们先来看看RefBase类的实现,它定义在frameworks/base/include/utils/RefBase.h文件中:
class RefBase &n
原创
2011-09-23 00:59:02
1456阅读
在浅谈Android引用计数(1)中讲了LightRefBase实现对象计数管理的原理,这篇文章将要分析重量级的引用基类:RefBase的实现和它的作用。
下面是RefBase和相关类的类图:
图中可以看出,RefBase类有一个成员变量 mRefs,它指向一个weakref_impl对象。这个对象管理这RefBase的生命周期,其中weakref_impl类中有两个引用计数:一个表示强引
推荐
原创
2013-04-10 20:52:32
1231阅读
1评论
8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?基于Android 6.0的源码剖析, 加深对Refbase,sp/wp的认知.system/core/libutils/RefBase.cpp
system/core/include/utils/RefBase.h
system/core/include/utils/StrongPointer.h一. 概述看过Andro
首先所有的类都会虚继承refbase类,因为它实
转载
2023-03-12 09:59:25
92阅读
1关于C++ Layer的内存回收机制Android C++层的内存收回主要是通过三个类来实现,分别是RefBase,sp,wp;SP和WP是两个智能指针模板类,sp是strong pointer,wp则是weakpointer,亦我们常说的强引用和弱引用;实例化sp和wp这两个模板类的类型必须是派生自RefBase的类1.1 RefBase类因为这个类拥有对内存回收机制的默
原创
2023-05-23 14:45:35
151阅读
Android有一套自己的智能指针管理办法,并且将其运用在源码的各个角落,所以学习Media框架之前,我们有必要先了解下Android智能指针。 1 总览与智能指针相关的总共有5个类,所以不会很复杂。RefBase.h一开始有一大段注释,我挑了一些进行了翻译:一般来说,想要让指针可以使用sp和wp来管理,需要让指针类型继承于RefBase原型;继承自RefBase的对象只有在引用减为0时才会被释放
转载
2023-08-07 17:30:52
265阅读
代码来源:android4.2.2源码智能指针参考原型:<c++ primer>13章 复制控制->13.5 用引用计数法来定义智能指针。android智能指针类文件:RefBase.h,StrongPointer.h定义了两个计数类和两种智能指针。两种计数类分别是轻量级计数(LightRefBase)和强弱引用计数类RefBase。两种智能指针分别是强指针模版类(sp)和弱指针
转载
2023-12-27 16:01:36
70阅读
1关于C++ Layer的内存回收机制
Android C++层的内存收回主要是通过三个类来实现,分别是RefBase,sp,wp;
SP和WP是两个智能指针模板类,sp是strong pointer,wp则是weak pointer,亦我们常说的强引用和弱引用;实例化sp和wp这两个模板类的类型必须是派生自RefBase的类
1.1 RefBa
转载
精选
2013-01-24 15:04:00
1697阅读
文章目录深入理解常见类第一部分 RefBase、sp和wp1. 初识影子对象1.1 RefBase和它的影子1.2 sp上场1.3 sp析构的影响1.4 总结2. 由弱生强2. 1 总结3. 破解生死魔咒3.1 延长生命的魔咒3.2 LIFETIME_WEAK的魔力3.3 LIFETIME_FOREVER4. 轻量级的引用计数控制类LightRefBase第二部分 Thread类及常用同步类分析
转载
2024-04-03 15:13:49
35阅读