Android的Handler提供了多种创建方式。其中有两种,例如下面代码中的myHandler1和myHandler2。在本人看来,两者都没有比对方方便一些,只是方式不同。有谁能帮忙解释或分析一下两者的应用场景的不同吗?能否举个例子,在某种场景下,其中一种用法明显优于另一种(代码结构更好或其他方便都可以)。谢谢!
package com.chanryma.demo; import android.os.Handler; import android.os.Message; public class HandlerDemo { private Handler myHandler1 = new Handler(new MyHandlerCallback()); private Handler myHandler2 = new MyHandler(); private class MyHandlerCallback implements Handler.Callback { @Override public boolean handleMessage(Message msg) { // Handle messages. return false; } } private class MyHandler extends Handler { @Override public void handleMessage(Message msg) { // Handle messages. } } }
看了一下Handler的源码,下面是处理消息的过程:
/** * Handle system messages here. */ public void dispatchMessage(Message msg) { if (msg.callback != null) { handleCallback(msg); } else { if (mCallback != null) { if (mCallback.handleMessage(msg)) { return; } } handleMessage(msg); } }
这里也是根据mCallback能否为空,而调用不同的处理方法。还是没看出两种使用方式的优劣。
解决方案
20
假如MyHandlerCallback类是可复用的,本人建议用第一种方式。
否则这两种没什么区别,使用第二种方式有时还能省几行代码,省去起类名的时间。
本人觉得没必要为这么小的问题去钻牛角尖,只要能实现你要的就行了。
否则这两种没什么区别,使用第二种方式有时还能省几行代码,省去起类名的时间。
本人觉得没必要为这么小的问题去钻牛角尖,只要能实现你要的就行了。