当前位置: 首页 > wzjs >正文

制作网站多少钱一个外贸网站建设哪里实惠

制作网站多少钱一个,外贸网站建设哪里实惠,建设一个视频教学网站,山东定制版网站建设公司在 Android 系统中&#xff0c;强指针模板类&#xff08;sp<T>&#xff09; 是一种基于引用计数的智能指针实现&#xff0c;专门用于管理对象的生命周期。它被广泛用于 Android Framework 的底层&#xff08;Native 层/C 代码&#xff09;&#xff0c;尤其是与 Binder 通…

在 Android 系统中,强指针模板类(sp<T> 是一种基于引用计数的智能指针实现,专门用于管理对象的生命周期。它被广泛用于 Android Framework 的底层(Native 层/C++ 代码),尤其是与 Binder 通信相关的模块。

1. sp<T> 的定义与作用

  • 模板类sp<T> 是一个模板类(定义在 <utils/StrongPointer.h> 中),通过泛型支持任意类型的对象。
  • 强引用语义:通过引用计数(Reference Counting)跟踪对象的使用情况,确保对象在不再被任何指针引用时自动释放内存。
  • 设计目标:解决 Android 系统中 Native 层对象生命周期管理的复杂性,避免内存泄漏和野指针问题。

2. 强指针服务对象

引用计数机制
  • 每个被 sp<T> 管理的对象必须继承自 RefBase(定义在 <utils/RefBase.h>)。
  • RefBase 提供了两个引用计数器:
    • 强引用计数(Strong Count):由 sp<T> 管理,归零时对象被销毁。
    • 弱引用计数(Weak Count):由 wp<T>(弱指针)管理,归零时对象的控制块被释放(但对象内存可能已被强引用释放)。
sp<T> 的实现原理
  1. 构造 sp<T>
    sp<T> 指向一个对象时,会调用 RefBase::incStrong() 增加强引用计数。

    template<typename T>
    sp<T>::sp(T* other) : m_ptr(other) {if (other) other->incStrong(this);
    }
    
  2. 析构 sp<T>
    sp<T> 超出作用域或被重置时,调用 RefBase::decStrong() 减少强引用计数。若计数归零,销毁对象。

    template<typename T>
    sp<T>::~sp() {if (m_ptr) m_ptr->decStrong(this);
    }
    
  3. 赋值与拷贝
    拷贝或赋值操作会调整引用计数,确保新旧指针的正确管理:

    sp<ProcessState> p1 = new ProcessState(); // 强引用计数=1
    sp<ProcessState> p2 = p1;                 // 强引用计数=2
    

3. sp<T>RefBase 的关系

  • 对象必须继承 RefBase
    只有继承自 RefBase 的类才能被 sp<T> 管理。例如:

    class ProcessState : public virtual RefBase {// ...
    };
    
  • RefBase 的关键方法

    • incStrong():增加强引用计数。
    • decStrong():减少强引用计数,可能触发对象销毁。
    • onFirstRef():当强引用计数从 0 变为 1 时调用(首次被引用)。
    • onLastStrongRef():当强引用计数归零时调用(即将销毁)。

4. 使用场景示例

示例 1:Binder 代理对象的生命周期管理

在 Binder 通信中,客户端通过 sp<IBinder> 持有服务端的代理对象:

// 获取 ServiceManager 的代理
sp<IServiceManager> sm = defaultServiceManager();// 获取 BatteryService 的 Binder 代理对象
sp<IBinder> binder = sm->getService(String16("battery"));// 将 IBinder 转换为具体的服务接口
sp<IBatteryService> batteryService = interface_cast<IBatteryService>(binder);
  • sp<T> 确保代理对象在不再被使用时自动释放。
示例 2:单例模式的资源管理

ProcessState 单例中,使用 sp<T> 确保全局唯一实例的正确释放:

sp<ProcessState> ProcessState::self() {static sp<ProcessState> gProcess(new ProcessState);return gProcess;
}

5. sp<T> vs C++ 标准智能指针

特性sp<T> (Android)std::shared_ptr<T> (C++11)
依赖对象基类必须继承 RefBase无要求(通过 std::enable_shared_from_this 可选)
性能优化为嵌入式系统优化,轻量级通用实现,可能略重
线程安全引用计数操作是原子的(线程安全)默认线程安全(依赖实现)
弱指针支持通过 wp<T> 实现通过 std::weak_ptr<T> 实现
内存开销每个对象附带 RefBase 的控制块每个 shared_ptr 有单独的控制块

6. 注意事项

  1. 循环引用
    sp<T> 无法自动处理循环引用(如对象 A 持有 sp<B>,对象 B 持有 sp<A>),需结合 wp<T>(弱指针)打破循环。

  2. 继承 RefBase
    若类未继承 RefBase,使用 sp<T> 会导致编译错误。

  3. 跨模块传递
    确保对象的所有权通过 sp<T> 明确传递,避免裸指针(T*)脱离智能指针管理。

  4. 线程安全
    虽然 sp<T> 的引用计数操作是原子的,但对象本身的线程安全性需开发者自行保证。


文章转载自:

http://aQxQvHfu.hrpbq.cn
http://QTPufgzm.hrpbq.cn
http://Aw93ouvh.hrpbq.cn
http://dXh0pXm4.hrpbq.cn
http://0WOfxqif.hrpbq.cn
http://N0zNVaQm.hrpbq.cn
http://PWnfpCKw.hrpbq.cn
http://anwcV5TZ.hrpbq.cn
http://dO2HrOMK.hrpbq.cn
http://pXEl8vTT.hrpbq.cn
http://vfePnSXL.hrpbq.cn
http://ctC0Aoxs.hrpbq.cn
http://epimx49W.hrpbq.cn
http://7jl7astG.hrpbq.cn
http://Ihx1aoBi.hrpbq.cn
http://wAfQhgyw.hrpbq.cn
http://i1OaN5mS.hrpbq.cn
http://AaSOYEvl.hrpbq.cn
http://iujnNTp0.hrpbq.cn
http://0oBIn3rd.hrpbq.cn
http://EaMIC8Dr.hrpbq.cn
http://GlHF7zKo.hrpbq.cn
http://oIY11vQ2.hrpbq.cn
http://UBFZgdmP.hrpbq.cn
http://lHgN2ayV.hrpbq.cn
http://7tQkXaML.hrpbq.cn
http://OFj5A453.hrpbq.cn
http://5jAqMe4L.hrpbq.cn
http://yWYWZqgD.hrpbq.cn
http://WVYGSu5t.hrpbq.cn
http://www.dtcms.com/wzjs/639347.html

相关文章:

  • 烟台高端网站建设公司沈阳网站建设模块维护
  • 方案模板网站与客户沟通网站建设的技巧
  • 有做义工的相亲网站吗鹰潭建设网站
  • 百度网站建设及推广易做文学网站的logo
  • seo网站怎么做网站建设制作优帮云
  • 怎么形容网站做的很好旅游网站建设ppt模板
  • 智慧团建app北京seo服务商
  • 做网站手机版百度的网址是多少
  • 不用开源程序怎么做网站微信营销工具有哪些
  • 淘宝这种网站怎么做的衡阳关键词优化首选
  • c 做网站用什么框架店面设计师是什么
  • 禁止粘贴的网站个人网站域名取名
  • 宁波免费做网站企业网站框架
  • 软件开发职业学校百度关键词seo推广
  • 手机访问wordpress网站卡网页图片大全
  • 网站信息抽查评估网站上传服务器后台上传资料出错
  • 百度免费网站如何建设网站建设策划方案模板
  • 内蒙能源建设集团网站外贸网站有哪些?
  • 电商的网站怎么做的镇网站制作价格
  • 织梦做旅游网站asp.net 4.0网站开发与项目实战
  • 国外的建筑设计案例网站网络推广团队分工
  • 昆明优化广告公司搜索引擎优化seo培训
  • 下载素材第三方网站是怎么做推广公司有哪些公司
  • html5 网站自适应next.js做纯静态网站
  • 用手机可以做网站吗天元建设集团有限公司第六分公司
  • 潍坊网站收录水母智能在线设计平台
  • 上海网站建设官方网站新浪邮箱登录网页
  • 创可贴网页设计网站网站开发应用到的技术名词
  • 动易网站系统怎么样毕业设计做网站功能实现不出怎么办
  • 百度做网站的电话网站优化公司 网络服务