Jedis 订阅事件阻塞 Jedis 开启订阅事件的时候是这样的: public void psubscribe(final JedisPubSub jedisPubSub, final String... patterns) { checkIsInMulti(); connect(); // 连接server,底层是通过socket进行连接 client.setTimeoutInfinite(); jedisPubSub.proceedWithPatterns(client, patterns); // 主要是这里 client.rollbackTimeout(); }
Redis 事件监听
sql 引发的 dubbo 超时 最近在对已有项目进行分离,用了 dubbo,分离之后发现有个接口请求超时了,Google 后找到:http://www.cnblogs.com/binyue/p/5380322.html,文章说有两个解决办法: 找出耗时最多的方法,调优。 加大超时时间。
Android Activity 源码解析 Activity 是用得最多的了,平时也只是熟练的使用,知道 launchMode、intent-filte、screenOrientation,然后看下官网的资料,7个步骤,如何切换这些。现在就读一下底层的源码吧。
Android-Universal-Image-Loader缓存图片更改 之前在论坛上看到过介绍 bither-android-lib 这个工程,主要是说 Android 现有的图片缓存机制比较老,效果不好,然后替换成这个工程,作者说有测试过,效果会比较好。我也拿来做测试了,没看出来。想着可以把平时用的图片的加载库替换掉 Android-Universal-Image-Loader。
Eventbus Android 开发中,平时用多了 BroadcastReceiver 或者 Intent 进行事件分发,可以试试 Eventbus,进行封装再使用,简洁、快速,效果拔群。 Eventbus 的使用比较简单,只需要一个事件接收方,一个事件发送方。就是简单的订阅者模式,只要有消息发送,订阅了该消息的对象就可以收到。Eventbus 支持 Activity、Fragment 做为订阅者,只要如下简单的注册即可接收消息,下面的代码我做了一下封装,只要继承这两个类,默认都可以接收到消息: 1.消息注册 Activity 注册使用方式: import android.os.Bundle; import de.greenrobot.event.EventBus; /** * ClassName: MessageEventDispatchActivity.java </br> * Function: 事件消息注册 Activity </br> * @author jdk * @date 2014-11-3 * @Version: 1.0 */ public abstract class MessageEventDispatchActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 类似BroadcastReceiver,在开始时要注册一次 EventBus.getDefault().register(this); } @Override protected void onDestroy() { System.gc(); super.onDestroy(); // 同样的,结束的时候也要取消订阅 EventBus.getDefault().unregister(this); } /** * 需要使用的消息接收方法 * * @param message 这个类为我封装的消息类,最简单的可以替换成任意类(如 String) */ public abstract void onEvent(EventMessage message); } Fragment 注册使用方式: import de.greenrobot.event.EventBus; import android.os.Bundle; import android.support.v4.app.Fragment; /** * ClassName: MessageEventDispatchFragment.java </br> * Function: 事件消息注册 Fragment </br> * @author jdk * @date 2014-11-3 * @Version: 1.0 */ public abstract class MessageEventDispatchFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); } @Override public void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } /** * 需要使用的消息接收方法 * * @param message */ public abstract void onEvent(EventMessage message); } ###2.消息处理 步骤1注册完接收方式后,就要进行消息处理了,只要订阅了,消息发送都会发送给 onEvent() 方法,这个时候就要在这个方法中进行消息过滤或者处理了。 ###3.消息发送 前面2个步骤只是做好了收到消息的准备,消息还需要发送,最简单的消息发送如下 // message如步骤1中所示,是我定义好的,也可以用其他任意类型。 EventBus.getDefault().post(message); 这只是简单是使用。具体的还可以玩出各中花样,我现在的工程中,使用这个来做全局消息分发,首先做一个消息封装,通过这个消息可以携带各类型的信息、协议信息,然后通过 http(volley、async-http)请求、IM 的 socket 通信进行消的封装,从而可以减少代码耦合、提高复用性。等有时间,再把这个封装抽象出来,单独写一次。
Gradle 打包 Android APP 1.配置Gradle、android sdk path的问题略过,比较简单,网上很多。 2.Gradle 具体的打包,之前的资料还很少,具体的问题自己也遇到不少,做下总结。 Gradle 的版本跟随着 Android 一直在升级,现在的这个编译已经是修改过几次了,目前代码对应的版本为 :2.1。 工程有2个代码文件: build.gradle,编译的具体代码,签名信息、代码信息、混淆文件等 settings.gradle,工程路径说明,本地有自己或者第三方的 lib 时候,需要在这里进行说明。