Подтвердить что ты не робот

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

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

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

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

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

Есть ли способ реализовать пользовательский-слушатель, используя AsyncTask?

4b9b3361

Ответ 1

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.

Ответ 2

Просто для того, чтобы прояснить ситуацию: вы делаете именно то, что сказал hackbod, и добавляете это: активность, которая охватывает класс (с помощью метода setListener (прослушиватель прослушивания)), реализует Listener и в нем oncreate или onResume или где-либо вы вызываете yourClass.setListener(это).