alonealice

个人博客

Retrofit缓存实现

之前在使用网络请求缓存时,一直使用的是手动的方式。手动获取返回的数据,手动存储,手动读取缓存。这种方式麻烦、低效而且容易出错。在项目中一直使用的是retrofit2库作为网络库,retrofit2库本身并不支持存储,但是由于retrofit2基于okhttp实现,可以使用okhttp实现网络缓存。 首先我们要添加缓存地址和缓存最大体积 123File httpCacheDirectory =......

gradle版本切换问题

最近android studio2.2正式更新,当中有许多新功能对于开发来说都非常有用。我第一时间就更新尝鲜,在体会到它的优点之后,也看到了它的问题。比如,Instant Run虽然能大大加快编译速度,但是它在第一次编译的时候确实太慢了,虽然2.2比之前的版本已经快很多了,但还是比一般情况慢很多;之前我用的是gradle 1.5,但是切换到2.2后编译时出现了大量的报错,整整几百个错误让人不......

透明activity注意事项

之前在实现activity 滑动退出时,需要用到透明activity。结果在设置透明activity时遇到了很多的小问题,问题虽小,解决起来也很快,但还是有必要单拎出来说一下,免得其他小伙伴也掉进去。 首先先来看一下怎样设置透明activity: 123<item name="android:windowIsTranslucent">true</item......

DownloadManager实现文件下载

Android开发中,网络功能是必不可少的,其中很多时候我们还会用到文件下载。实现文件下载的方法很多,很多的第三方网络框架也都很容易的实现文件下载。这里给大家介绍系统自带的一个下载文件类DownLoadManager,它相比于其他的方法有几个优势:1.没有兼容问题。DownLoadManager在API 9时就开始支持了,所以不用担心在兼容问题。2.支持断点续传,大文件下载,自动支持通知栏进......

swipefinishlayout 的实现

很多android手机用户会发现ios应用自带右滑退出,这个功能虽小,却能很大程度上提高用户的使用体验,尤其是现在手机的尺寸越来越大的情况下。因此,越来越多的android应用也实现了这个效果。之前看到我一个朋友实现了android activity滑动关闭的效果,当时觉得好厉害,但是当自己尝试着去实现时发现,其实这个功能实现还是蛮简单的,现在在这里,我就讲讲如何使用几十行代码实现activ......

HandlerThread分析

HandlerThread是Thread的子类,它可以创建一个looper。而该looper对象可以用于创建Handler类来进行来进行调度。之前在用它时有两个疑问:一是Looper是在哪里创建的,二是怎样保证Looper是在创建之后才被使用。接下来通过HandlerThread的源码来看看它是如何实现的。 HandlerThread的源码十分简短,总共才100多行。 首先看看其构造方法: ......

Preference使用教程

前言 这几天在看书时,意外地看到了Preference框架。相对于IOS SDK,这个功能在创建设置界面时会更加容易一点。开发者只需要编辑一个简单的xml文件, 就能开发出一个简单的设置界面。我在网上找了一些资料,看到这些资料都只是简单的介绍了这个功能的使用,不够具体时间上也比较早。现在我就详细的介绍一下它的使用。 使用场景 在Android手机中都有设置功能,许多的android应用也有相......

IntentService解析

IntentService是Service的子类,它只要是处理异步请求。与普通的Service相比,它有两点区别:一是它的操作都是在异步线程中进行,二是它执行完成之后会自动停止。那我们就来看看它内部是如何实现的。 IntentService的源码真的是非常简单,只有区区几十行代码。 首先来看看oncreate方法: 12345678910111213@Override public vo......

AsyncTask解析

AsyncTask是我们在开发过程中经常使用的类,它是一个抽象类,主要用来实现轻量级异步操作。那接下来我们就看看它的内部实现。 1234567891011121314151617181920212223242526272829public AsyncTask() { mWorker = new WorkerRunnable<Params, Result>(......

第一个ndk程序

之前写过一个如何创建ndk程序并且调用相关的c语言方法,虽然方法是可行的,但是过程怎么看都别扭,都有一种投机取巧的感觉。查阅网上的相关资料,资料虽多,但是不是写的很复杂,就是时间太久了无法再适用了。哎,第三方资料都靠不住呀,只能看官方资料了。 官方资料其实很简单,而且基于 Android Studio 2.2 或者更高的版本,同时要求 Gradle version 2.2.0 或更高的版本。......
NDK