Обработчик в Android - PullRequest
       38

Обработчик в Android

3 голосов
/ 12 января 2012

Я внедряю IPC через обработчики в приложении для Android.В официальной документации (здесь 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 голосов
/ 12 января 2012

Быстрый взгляд на исходный код показывает, что реализация этого метода в суперклассе ничего не делает. Я бы назвал это тем не менее, потому что будущая версия Android может вести себя по-другому.

2 голосов
/ 12 января 2012

Я посмотрел на источники Android, и он просто показывает

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

Итак, я бы сказал нет.

Но (как проницательно заметил devconsole, пока я набирал ответ), было бы неплохо в любом случае назвать его.

2 голосов
/ 12 января 2012

Он призывает к реализации handleMessage в Handler, отце IncomingHandler.

Взгляните на учебник по Java .

Что касается вашего нового вопроса, проблем быть не должно, так как этот метод пуст в классе Handler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...