美文网首页
学习计划

学习计划

作者: yangSmallXing | 来源:发表于2021-06-15 12:37 被阅读0次

第一周:

①学习了hashmap更具体的知识:

JDK1.8中hashmap对链表很长时的优化,当链表长度太长时,链表就转换为红黑树,这样大大提高了查找的效率。红黑树是自平衡的二叉查找树,拥有二叉树的特性,又额外增加了特性。

二叉树可能的时间复杂度是O(N),为了避免出现这种情况,使用红黑树,当新插入的数据破坏红黑树平衡时,它会重新达到平衡。

第二周:

①内存泄漏需要注意的点

内存泄漏最核心的本质是:对象不再被应用程序使用,但垃圾回收器却不能移除它们,因为它们还在被引用。

常见的内存泄漏是内部类, 单例引用。 如果单例需要传入context, 需要看是否引用这个context,而不是传入context参数就会存在内存泄漏。

②学习Eventbus源码

(1)注册:

Eventbus.getDefault().register(Object),首先Eventbus.getDefault()获得Eventbus单例,之后调用register(Object)方法, 找到Object的类的onEvnet方法。

private synchronized void register(Object subscriber, String methodName, boolean sticky, int priority) {
List<SubscriberMethod> subscriberMethods = this.subscriberMethodFinder.findSubscriberMethods(subscriber.getClass(), methodName);
Iterator var6 = subscriberMethods.iterator();

while(var6.hasNext()) {
    SubscriberMethod subscriberMethod = (SubscriberMethod)var6.next();
    this.subscribe(subscriber, subscriberMethod, sticky, priority);
}

}
遍历subscriberMethods,执行subscribe(subscriber, subscriberMethod),这个方法中主要做根据优先级把 subscriberMethod 插入到 subscriptions 中,将 eventType 放入到 subscribedEvents 中, 如果订阅方法支持 sticky ,那么发送相关的粘性事件。

第三周:

①学习Eventbus源码

反注册

在之前 register(Object subscriber) 中 subscriptionsByEventType 和 typesBySubscriber 会对 subscriber 间接进行绑定。而在 unregister(Object subscriber) 会对其解绑,这样就防止了造成内存泄露的危险。

②android适配:分区存储适配

范围:

android 9及以下不需要适配
android 10仅对targetSdkVersion>=29则会开启分区存储。targetSdkVersion小于29则不会有任何限制与android9及以下同理。
andorid 11强制执行分区存储。不允许应用读写操作非应用沙盒目录和系统公共目录下的资源文件。

适配方式:

使用ContentResolver进行文件的增删改查

第四周:

①学习源码

post(Object event)方法:

在 post(Object event) 中,首先根据 currentPostingThreadState 获取当前线程状态 postingState 。currentPostingThreadState 其实就是一个 ThreadLocal 类的对象,不同的线程根据自己独有的索引值可以得到相应属于自己的 postingState 数据。 然后把事件 event 加入到 eventQueue 队列中排队。只要 eventQueue 不为空,就不间断地发送事件。而发送单个事件的代码在 postSingleEvent(Object event, PostingThreadState postingState) 中。postSingleEvent(Object event, PostingThreadState postingState) 中的代码逻辑还是比较清晰的,会根据 eventInheritance 分成两种: 支持事件继承:得到 eventClass 的所有父类和接口,然后循环依次发送事件; 不支持事件继承:直接发送事件。 另外,若找不到订阅者,在默认配置下还会发送 NoSubscriberEvent 事件。

②glide缓存

内存作为一级缓存,本地作为二级缓存,网络加载为最后。其中,内存使用 LruCache ,其内部通过 LinkedhashMap 来持有外界缓存对象的强引用;对于本地缓存,使用 DiskLruCache。加载图片的时候,首先使用 LRU 方式进行寻找,找不到指定内容,按照三级缓存的方式,进行本地搜索,还没有就网络加载。

第五周:(2021年5月31日)

ThreadLocal的源码:

ThreadLocal类是线程本地变量。也就是说如果定义了一个ThreadLocal,每个线程往这个ThreadLocal中读写是线程隔离,互相之间不会影响的。它提供了一种线程封闭的机制。 Thread类有一个类型为ThreadLocal.ThreadLocalMap的实例变量threadLocals,每个线程有一个自己的ThreadLocalMap。ThreadLocalMap有自己的独立实现,每个线程在往某个ThreadLocal里塞值的时候,都会往自己的ThreadLocalMap里存,读也是以某个ThreadLocal作为引用,在自己的map里找对应的key,从而实现了线程隔离。

使用场景:

两个线程需要同时连接sqlite数据库,一个线程关闭数据库, 影响另一个线程。使用ThreadLocal让数据库连接不共享。

第六周:(2021年6月7日)

Rxjava使用:

使用Rxjava实现异步操作。

Observable (被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。

使用Scheduler 实现线程切换,

subscribeOn(): 指定 subscribe() 所发生的线程,即 Observable.OnSubscribe 被激活时所处的线程。或者叫做事件产生的线程。 observeOn(): 指定 Subscriber 所运行在的线程。或者叫做事件消费的线程。

Rxjava操作符:

一:创建操作 二:合并操作 三:过滤操作 四:切换线程 五:条件/布尔操作 六:聚合操作 七:转换操作 八:变换操作 九:错误处理/重试机制 十:连接操作 十一:阻塞操作 十二:工具集 十三:Flowable (2.0出来的) 非操作符

操作符有点多,暂时记不住。

注意点:

如果Rxjava正在执行,但是页面已经退出,会发生内存泄漏,解决办法:

①老项目:

老项目之前的baseActivity可能会影响到,直接得到Disposable,在activity的onDestroy调用Disposable.cancel();

②新项目:

使用RxLifecycle,调用.compose(this.<Long>bindUntilEvent(ActivityEvent.DESTROY)),在activity的onDestroy方法被调用时取消订阅。

相关文章

  • 计划汇总

    lintcode计划 the war of art翻译计划 《机器学习》西瓜书学习计划

  • 以后要有规划的生活啊

    计划看书 计划学习编程 计划学习英语 计划运动 计划涂鸦 光是想一想就很兴奋呢

  • 六班一组艾斯五月中下旬三个纬度规划

    工作计划: 生活计划: 学习计划:

  • 相约星期二。

    制定老A爷爷的音频学习计划以及讲师的学习计划以及讲课的实施计划。

  • 把事做精,总会有一些成功(二)

    为自己做一些计划。比如健康计划,学习计划,美颜美体计划,督促孩子学习计划等等,这些看似简单平常的计划,如果做得精细...

  • 学习计划

    星期五至星期日单词600个每天200 数学完成第三章。 JAVA看完spring框架 web看完xml,js学习到...

  • 学习计划

    1每天一首古诗,今天第二天。 2看书把好妈妈胜过好老师再看一遍。 3学习一年级上册教材。 今天学会俩手古诗,第二首...

  • 学习计划

    每天看1小时教育学书籍 每天学一个百词斩

  • 学习计划

    1, 周一至周五将视频学完,保证至少要学对应两天的内容,有时间的话还是要学三天的内容。 2,周六,日结合作业进行练...

  • 学习计划

    【每日一问】我们终于开课啦!接下来的14天,你准备怎样完成股票初级的学习任务呢? 是早就成竹在胸自信满满还是有些迷...

网友评论

      本文标题:学习计划

      本文链接:https://www.haomeiwen.com/subject/fdrzeltx.html