Android系统学习总结之深入理解常见类

深入理解常见类

  1. 使用RefBase构造函数,进行强引用和弱引用。RefBase是一个重量级的引用计数控制类。
  2. sp构造完后,RefBase中影子对象的强引用计数变为1,且弱引用技术也变为1。sp析构后,强弱引用计数各减1;(4.4版本后,sp不在RefBase中,而是在StrongPointer中)
  3. wp化后,影子对象的弱引用计数将增加1,变为2;wp析构后,弱引用计数减1;
  4. 完全彻底地消灭RefBase对象,包括让实际对象和影子对象灭亡,这些都是由强弱引用计数控制的,另外还要考虑flag的取值情况。当flag为0时:
    a) 强引用为0将导致实际对象被delete;
    b) 弱引用为0将导致影子对象被delete;
  5. wpA的promote函数是从一个弱对象产生一个强对象的重要函数;
  6. 由弱生强的关键函数是attemptIncStrong
  7. LIFETIME_WEAK下,强引用计数为0,而弱引用计数不为0的时候,实际对象没有被delete,只有当强引用计数和弱引用计数同时为0时,实际对象和影子对象才会被delete;
  8. LIFETIME_FOREVER的总结:
    a) flags为0,强引用计数控制实际对象的生命周期,弱引用计数控制影子对象的生命周期。强引用计数减为0时,实际对象被delete。使用wp时要由弱生强,以免收到segmentfault信号;
    b) flags为LIFETIME_WEAK,强引用计数为0,弱引用计数不为0,实际对象不会被delete。当弱引用计数减为0时,实际对象和影子会同时被delete。
    c) flags为LIFETIME_FOREVER,对象将永不被delete,彻底摆脱弱引用计数的控制。
  9. LightRefBase是一个轻量级的引用计数控制类;
  10. void*返回任意类型的值的指针;
  11. mCanCallJava为true的目的,它创建的新线程将:
    a) 在调用你的线程函数之前会attach到JNI环境中;
    b) 线程函数退出后,它会从JNI环境中detach,释放一些资源;
  12. threadLoap运行在一个循环中,它的返回值可以决定是否退出线程。
  13. Mutex是互斥类,用于多线程访问同一个资源的时候,保证一次只有一个线程能访问该资源。使用lock函数锁住区域,如果这块区域之前已被别人锁住,look函数则等待,知道可以进入这块区域为止,系统保证一次只有一个线程能lock成功。unlock以释放互斥区域。trylock函数只是尝试去锁住该区域,使用者需要根据trylock的返回值来判断是否成功锁住该区域。
  14. AutoLock是定义在mutex内部的一个类,用户如下:
    a) 先定义一个Mutex,如Mutexxlook;
    b) 在使用xlook的地方,定义一个AutoLook;
  15. 由于C++对象的构造和析构函数都是自动被调用的,所以在AutoLock的生命周期内,xlock的lock和unlock也就自动被调用了。
  16. 原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,原子操作是最小执行单位。
  17. g_flags++生成的汇编指令:
    a) 从内存中取数据到寄存器;
    b) 对寄存器中的数据进行递增操作,结果还在寄存器中;
    c) 寄存器的结果写回内存;
  18. Android系统中Java的应用程序和其他系统上相同,都是靠消息驱动来工作的,大致的工作原理如下:
    a) 有一个消息队列,可以往这个消息队列中投递消息;
    b) 有一个消息循环,不断从消息队列中取出消息,然后处理;
  19. 线程和消息处理的流程如下:
    a) 事件源把待处理的消息加入到消息队列中,一般是加至队列尾,一些优先级高的消息也可以加至队列头。事件源提交的消息可以是按键、触摸屏等物理时间产生的消息,也可以是系统或应用程序本身发出的请求消息;
    b) 处理线程不断从消息队列头中取出消息并处理,事件源可以把优先级高的消息放到队列头,这样,优先级高的消息就会被首先处理。
    c) Looper类,用于封装消息循环,并且有一个消息队列;
    d) Handler类,封装消息传递、消息处理等接口;
  20. Looper的作用:
    a) 封装了一个消息队列;
    b) Looper的prepare函数把这个Looper和调用perpare的线程绑定在一起了;
    c) 处理线程调用loop函数,处理来自该消息队列的消息。
  21. 当事件源向这个Looper发送消息的时候,其实就是把消息加到这个Looper的消息队列里。
  22. Looper、Message、Handler的关系
    a) Looper中有一个Message队列,里面存储的是一个个待处理的Message;
    b) Message中有一个Handler,这个Handler是用来处理Message的;
  23. dispatchMessage定义了一套消息处理的优先级机制,他们分别是:
    a) Message如果自带了calllback处理,则交给callback处理;
    b) Handler如果设置了全局的mCallback,则交给mCallback处理;
    c) 如果上述都没有,该消息则会交给Handler子类实现的handlerMess来处理,需要从Handler派生并重载handlerMessage函数;
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值