天晴日无风

燃烧了一颗恒星来相见


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

LruCache解析

发表于 2018-01-31 | 分类于 源码解析

前言

在学习Glide的时候, 我们会看到Glide的二级缓存, 分别分为内存缓存和磁盘缓存, 而不论哪种缓存都使用到了Lru算法, 本篇主要看一下Android里的LruCache的实现

阅读全文 »

谈谈GC和引用

发表于 2018-01-12 | 分类于 Java

前言

A拿了一串代码和一篇文章来问我,

...当productA变为null时(表明它所引用的Product已经无需存在于内存中),这时指向这个Product对象的就是由弱引用对象weakProductA了,那么显然这时候相应的Product对象时弱可达的,
所以指向它的弱引用会被清除,这个Product对象随即会被回收,指向它的弱引用对象会进入引用队列中。

根据文章上述引用内容, 当他在执行下文代码的putnull方法时, 为什么userWeakReference.get()对象不为null, 难道userWeakReference.get() 和 user 不是一个对象吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class MainActivity extends AppCompatActivity {
private User user;
public static final int period = 2000;
private WeakReference<User> userWeakReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

user = new User();
userWeakReference = new WeakReference<>(user);

Observable.interval(period, TimeUnit.MILLISECONDS)
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
Log.d("gc", String.format("user is %s null", (null == user) ? "" : "not") +
String.format(" ****" +
" userWeakReference.get() is %s null", (null == userWeakReference.get()) ? "" : "not"));
}
});

}

public void putnull(View view) {
Log.i("gc", "============ user = null ==============");
user = null;
}

public void excutegc(View view) {
Log.i("gc", "========== gc done =============");
System.runFinalization();
System.gc();

}
}

阅读全文 »

Enum的正确使用方式

发表于 2017-12-26 | 分类于 android学习记录

前言

看到目前项目里用到蛮多枚举, 才有了这篇小文章分享

为什么使用Enum

java中的Enum是包含固定常量集的数据类型.当我们需要预定义一组代表某种数据的值时一般都会使用枚举, 而当要保证类型安全时, 我们经常会使用Enum。

比如, 当我们要保证常量使用正常时, 我们经常使用Enum在编译时校验确保类型安全

阅读全文 »

Glide源码解析

发表于 2017-12-22 | 分类于 android学习记录 , 源码解析

基于v4最新版本的Glide解析, 从最开始的简单加载开始看源码, 仅作个人记录.

阅读全文 »

利用gradle多aar发布私有maven

发表于 2017-12-19 | 分类于 android学习记录

前言

为了精简目前底层的基础组件库, 拆分出必要依赖项目(有一定精简)和完全的依赖项目,
第一想法是在library上构建变种(Variant)版本, 一次发布所有的变种,在研究了一些相关的资料后,
最后完美解决

阅读全文 »

ObjectBox-Java (android)使用手册

发表于 2017-12-19 | 分类于 android学习记录

前前言

本篇主要是方便自己记忆所写, 基本是撸完官方文档后的笔记

前言

ObjectBox是一款由greenrobot出的基于noSql的ORM数据库, 但又支持表关系的定义以及事务的处理, 另外在性能上有着非常卓越的表现
(关于性能比较, 可以看这篇),
同时可以接入rxJava的扩展库, 并与google最新出的框架组件(Android Architecture Components)中的LiveData结合使用, 支持Kotlin.
目前版本更新到1.2.1

阅读全文 »
1…34
天晴日无风

天晴日无风

开发笔记

30 日志
7 分类
17 标签
GitHub
© 2017 - 2020 天晴日无风
由 Hexo 强力驱动
主题 - NexT.Pisces