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