Archive for 十二月 2013

Android开发 事件总线框架otto

前面介绍过另一款事件总线,叫EventBus,从官网说明来看,比今天的这个otto要强大很多,比如支持异步,以及主线程,后台线程分发事件等。但因为项目里同事用了otto,所以做下了解。
与BventBus基于事件类型和方法名来分发事件不同,Otto使用注解和事件类型。 Continue reading ‘Android开发 事件总线框架otto’ »

Android开发 使用EventBus管理事件传递消息

EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
源码:https://github.com/greenrobot/EventBus Continue reading ‘Android开发 使用EventBus管理事件传递消息’ »

Java HmacSHA512 生成(与PHP中hash_hmac一样)

PHP中有一个hash_hmac函数,hash_hmac('sha512', $data, $key),可以用sha512算法给data通过key生成一个摘要,但Java中没有直接可用的方法。 Continue reading ‘Java HmacSHA512 生成(与PHP中hash_hmac一样)’ »

Android开发 使用MVC架构及状态设计模式开发

MVC架构的优点就不介绍了不过说实话,在小项目里用MVC,相对而言,确实复杂了。状态模式是指让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。下面的一个例子是模拟下载文件,不同的状态,点击按钮有不同的动作,使用Handler在Controller和Activity之间传递消息,以执行不同的操作,改变UI。范例独立出了Controller,并没有把Activity当Controller。 Continue reading ‘Android开发 使用MVC架构及状态设计模式开发’ »

Android开发 多线程开发 HandlerThread

通过查看HandlerThread,可以知道,本质上,它就是一个Thread,只不过多了一个Looper,可以跟UI线程一样,通过Handler,发送消息在后台线程中执行任务。示例代码: Continue reading ‘Android开发 多线程开发 HandlerThread’ »

Java多线程 线程中异常处理

默认情况下,不能捕获线程中逃逸的异常,一但异常逃出run方法,就会向外传播到控制台,J2SE 5以后,可以使用Executor来解决这个问题。
Thread类有一个setUncaughtExceptionHandler方法,可以设置未捕获异常的处理方法。利用ThreadFactory,我们可以给所有使用线程池管理的线程添加处理方法。 Continue reading ‘Java多线程 线程中异常处理’ »

Java 多线程编程 线程执行完的返回值

如果使用Runnable接口,run方法是没有返回值的,若需要返回值,可以使用Callable接口。不过在获取返回值时,如果线程没执行会,会阻塞。
代码来自Think in Java. Continue reading ‘Java 多线程编程 线程执行完的返回值’ »

Java 用FixedThreadPool限制线程数量

如果一味的new Thread,不用线程池,可能会导致同时执行很多线程,引发性能问题。比如在ListView里,每个item都有一张网络图片,如果在adapter里的getView方法里直接使用new Thread去异步下载图片,当划动listview时,如果速度快,就会产生几十甚至上百个下载线程。而使用线程池,就可以很方便管理线程。 Continue reading ‘Java 用FixedThreadPool限制线程数量’ »