Handler in Android

3
我将使用Handler在Android应用程序中实现IPC。 在官方文档(此处http://developer.android.com/reference/android/app/Service.html)中有一个示例:
class IncomingHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case MSG_REGISTER_CLIENT:
                mClients.add(msg.replyTo);
                break;
            case MSG_UNREGISTER_CLIENT:
                mClients.remove(msg.replyTo);
                break;
            case MSG_SET_VALUE:
                mValue = msg.arg1;
                for (int i=mClients.size()-1; i>=0; i--) {
                    try {
                        mClients.get(i).send(Message.obtain(null,
                                MSG_SET_VALUE, mValue, 0));
                    } catch (RemoteException e) {
                        // The client is dead.  Remove it from the list;
                        // we are going through the list from back to front
                        // so this is safe to do inside the loop.
                        mClients.remove(i);
                    }
                }
                break;
            default:
                super.handleMessage(msg);
        }
    }
}

我的问题很简单:这行代码是做什么用的?
super.handleMessage(msg);

我需要调用这个方法吗?


编辑: 我知道这将调用父类中该方法的实现。但是这个方法里面有什么特殊的内容吗?在发布消息之前是否需要进行某些特殊处理?

提前感谢。

3个回答

4

一眼看去,源代码显示出该方法的超类实现并没有做任何事情。但是我还是会调用它,因为未来的Android版本可能会有不同的行为。


2

我查看了Android源代码,结果只显示了

/**
 * Subclasses must implement this to receive messages.
 */
public void handleMessage(Message msg) {
}

所以,我会说不需要这样做。

但是(正如devconsole在我回答时聪明地指出的那样),调用它仍然是一个很好的实践。


2
它调用Handler中的handleMessage实现,IncomingHandler的父类。
请参考Java教程
至于您的新问题,应该没有问题,因为该方法在Handler类中为空。

是的,我知道这个。但是我有必要调用那个方法吗?我正在编辑我的问题以使其更具体。 - mneri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接