2012-01-12 75 views
3

我正在Android应用程序中通过处理程序实现IPC。 在官方文档(这里http://developer.android.com/reference/android/app/Service.html)有一个例子:Android中的处理程序

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); 

我是否一定要调用该方法?


编辑: 我知道这会调用该方法的父的实现。但是那种方法是什么?在发布消息之前是否需要做特别的事情?

在此先感谢

回答

4

快速浏览一下source code表明这个方法的超类实现什么也不做。尽管如此,我仍然会这么称呼它,因为未来版本的Android可能会有不同的表现。

2

它调用的handleMessageHandler实施的IncomingHandler父亲。

看看Java tutorial

关于您的新问题,应该没有问题,因为此方法在Handler类中为空。

+0

是的,我知道这一点。但我有义务称这种方法吗?我正在编辑我的问题,以更具体一点。 – mneri 2012-01-12 15:42:16

+0

好的,谢谢! – mneri 2012-01-12 15:49:07

2

我看了一下android的来源,它只是显示

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

所以,我说没有。

但是(正如我在键入我的答案时敏锐地观察到的devconsole),无论如何称它为好习惯。