Как реализовать слушателя

У меня проблема с дизайном. Мне нужно реализовать слушателя. Я увидел следующий вопрос SO: Как создать наш собственный интерфейс слушателя в android?

Но в ссылке, которую он предоставляет в ответе, автор создает слушателя, который просто расширяет системный слушатель. Например, onClick, вы должны выполнить некоторую проверку, а затем вызвать другой метод под названием "whenValidatedListener"

Мне нужно определить слушателей, которые не связаны с существующими слушателями событий. В основном будет некоторая обработка, происходящая в собственном (C / C ++) коде, а в коде Android мне нужен слушатель, чтобы отвечать на определенные сообщения от него.

Думаю, я мог бы сделать это с помощью обработчиков. Но AsyncTask - рекомендуемый подход для многопоточности.

Есть ли способ реализовать пользовательский прослушиватель с помощью AsyncTask?


person OceanBlue    schedule 09.05.2011    source источник


Ответы (2)


AsyncTask не имеет ничего общего с реализацией слушателя.

Вот слушатель:

public interface TheListener {
    public void somethingHappened();
}

Называйте это как хотите. Например, вот класс, выполняющий что-то вроде View:

public class Something {
    private TheListener mTheListener;

    public void setTheListener(TheListener listen) {
        mTheListener = listen;
    }

    private void reportSomethingChanged() {
        if (mTheListener != null) {
            mTheListener.somethingHappened();
        }
    }
}

Вы можете сделать это настолько сложным, насколько захотите. Например, вместо одного указателя слушателя у вас может быть ArrayList, чтобы разрешить регистрацию нескольких слушателей.

Вызов этого из собственного кода также не имеет ничего общего с реализацией интерфейса слушателя. Вам просто нужно узнать о JNI, чтобы узнать, как собственный код может взаимодействовать с кодом языка Java.

person hackbod    schedule 09.05.2011
comment
Привет, я немного запутался в том, что вы установили для слушателя в setTheListner () - person Jon Wells; 24.11.2011
comment
Класс, о котором вы хотите сообщить, реализует интерфейс TheListener. Вы передаете объект, реализующий этот интерфейс, в setTheListener (). - person hackbod; 28.11.2011
comment
@hackbod Следует ли мне вызывать new Something().setTheListener(this) в классе, который реализует TheListener? - person Archie.bpgc; 04.07.2013
comment
вау, я запутался ... где определение somethingHappened () ?? - person mafiOSo; 15.11.2013

Просто чтобы прояснить ситуацию;

вы делаете именно то, что сказал @hackbod, и добавляете это:

activity, который включает класс (с методом setListener(Listener listen)), реализует Listener и в нем oncreate или onResume или где бы вы ни вызывали yourClass.setListener(this).

person MacD    schedule 21.02.2014