基本概念 说起线程,就不得不先提下进程,在计算机中,我们把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程。某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程。 进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一...
西安GDG上关于主题[当Android遇上RxJava]的分享总结
前言 1月10号这一天,也是值得高兴的日子,一大早起来打开手机看到《RxJava Essentials》一书的作者Ivan.Morgillo给我在推特上发的消息点赞并转发后关注了我,这让我激动不已,可能对于我这种没见过大世面的人来说,这点小事或许就足以让我自己心里乐上三天。然后就是昨天下午在西安GDG做了关于RxJava的分享,下面是分享内容的总结。 ##分享内容总结 大致分为以下三个主...
RxJava Essentials翻译总结
##前言 在前年的时候,一直忙于工作,偶尔关注下开源社区,平时在使用retrofit的库时一直采用传统的回调,当时看官网发现也可以Observable对象,很好奇,但是一直不知道这是什么?慢慢的,关注Jake大神,才知道是RxJava,当时并没有引起我对RxJava 的好奇,也就没有太在意,但是我的心里一直有个梗就是在使用回调时如何让嵌套回调的代码看起来不是那么槽糕,用今天的话说就是回调地狱...
Android磁盘缓存
1.概述 在上一篇文章中简单介绍了内存缓存,其核心就是LruCache这个类,我们知道它的优点就是直接可以读取内存,当然速度就会很快,但是它同时也有下面不足的地方: 手机内存空间十分有限,所以我们不能随意的设置内存缓存大小。 内存紧张时可能会优先被GC回收掉。 退出应用时就回收掉,不能离线存储数据 基于以上原因,于是就有了磁盘缓存,Android开源届Jake大神为我们提供...
Android内存缓存
1.概述 通常情况下,我们为了实现更好的用户体验从而引入了缓存的概念,这在Android应用于图片列表加载上显得更为重要。我们为了让内存维护在一个合理的范围,通常会把移除屏幕的图片进行回收处理,让GC去操作这些不在持有图片的引用,为了App有更流畅的体验,比如在界面上更加流畅的加载图片,而不得不考虑的一个问题就是图片回收之后,这时候用户又将刚刚回收的图片重新滑入屏幕内,这时候又回去加载一遍刚...
Andriod源码之IntentService用法与原理
IntentService从名字来看就知道是一个Service,它是Service的子类,由于在Service里不能执行耗时操作,所以Google设计了一个IntentService,它在IntentService内部维护了一个工作线程来处理耗时操作,其实也就是HandlerThread,当任务执行完成后,IntentService会自动停止。先来看下如何使用: public class ...
Android源码之HandlerThread用法与原理
在android开发中,当我们用Thread和Handler构造一个消息循环的需求时,往往这样做: Handler mHandler; private void createThreadWithHandler() { new Thread() { @Override public void run() { super.run(); ...
Android源码之AsyncTask用法与原理
在android开发中,主线程不能执行耗时操作,否则程序容易出现ANR,并且崩溃掉,所以我们常常会把主线程耗时操作放在子线程去做,同时把子线程执行的结果通过handler传递到主线程,执行刷新UI操作。否则就会抛出异常: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread...
Java并发编程之Callable、Future和FutureTask
基本概念 我们知道创建线程,经常使用两种方式,即: 直接继承Thread 另一种是实现Runnable接口 但是上面两种方式都有一个问题就是,在执行完任务之后无法直接获取执行的结果。而Callable的出现就是为了解决这个问题,下面是这两个接口的定义: // Callable.java public interface Callable<V> { V ...
Android线程间通信之Handle机制原理
在Android开发中,我们 经常会用到Handler,主要是子线程完成耗时操作后,通过Handler向主线程发送消息Message,用来刷新UI。我们都知道下面这两个原则: 不能在子线程更新UI 不能在主线程执行耗时操作 Android中,界面主要是由主线程绘制的,所以界面的更新一般都限制在主线程内,这个异常是在viewRootIimpl.checkThread()方法中抛...