haoxiaofei


String,StringBuffer与StringBuild对比

String
String 是字符串常量。
是不可变对象,每次改变都等于生成了一个新的String对象,然后指向新的对象。所以经常改变内容的字符串最好不要用String。
StringBuffer
StringBuffer是字符串变量。
并且是线程安全的。
每次改变都是对StringBuffer对象本身操作。
但是在某些特别的情况下,String的字符串拼接其实是被JVM解释成了Strin...


Posted by HAOXIAOFEI on June 16, 2017



超级白话ButterKnife源码

ButterKnife简单使用
class ExampleActivity extends Activity {
@BindView(R.id.title) TextView title;
@BindView(R.id.subtitle) TextView subtitle;
@BindView(R.id.footer) TextView footer;
@Overrid...


Posted by HAOXIAOFEI on June 15, 2017



超级白话Retrofit2源码

关于retrofit的简单使用
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("")
.build();
MyApi mApi = retrofit.create(MyApi.class);
mApi.g...


Posted by HAOXIAOFEI on June 14, 2017



SwipeRefreshLayout源码分析

简介
官方文档
SwipeRefreshLayout 是一个下拉刷新控件,几乎可以包裹一个任何可以滚动的内容(ListView GridView ScrollView RecyclerView),可以自动识别垂直滚动手势。使用起来非常方便。
1.将需要下拉刷新的空间包裹起来
<android.support.v4.widget.SwipeRefreshLayout
an...


Posted by HAOXIAOFEI on March 29, 2017



Java线程的同步与死锁

同步问题的引出
多个线程访问同一个资源时需要考虑到的问题。
同步操作
Synchronized关键字
Sychronized关键字
Synchronized关键字有两种使用方式:
同步代码块
同步方法
Java中有四种代码块
普通代码块
构造块
静态块
同步块
同步操作与异步操作相比,异步操作的执行速度要高于同步操...


Posted by HAOXIAOFEI on February 26, 2017



Java线程

Java创建多线程的方法
继承Thread类
实现Runnable接口
实现Callable接口
Java中多线程两种实现方式的区别?/Thread类与Runnable接口实现多线程的区别?
Thread类是Runnable接口的子类,使用Runnable接口实现多线程可以避免单继承局限。
Runnable接口实现的多线程比继承Thread类实现的多线程更加清楚的...


Posted by HAOXIAOFEI on February 26, 2017