Создать свой собственный EventListener в Android Studio, который срабатывает, когда функция возвращает значение - PullRequest
0 голосов
/ 27 июня 2018

В настоящее время у меня есть класс, который принимает местоположение объекта (поэтому аргументы постоянно меняются), и я инициализирую класс и запускаю функцию из класса каждую секунду в потоке, он возвращает целое число (-1, если не существует или ошибка). Целое число, которое возвращает функция, важно, потому что на основе этого целого числа я буду запускать несколько других функций, которые также будут выполняться в отдельных потоках. Есть ли способ преобразовать весь этот процесс в использование прослушивателя событий?

Я в основном хочу, чтобы событие инициировалось, когда функция в этом классе возвращает любое число, кроме -1, и тогда я бы запустил отдельный поток с некоторыми функциями из MainActivity.

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

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете решить вышеуказанную проблему с помощью пользовательского интерфейса

  1. Создать интерфейс

    interface LocationUpdateListener {
          int onLocationChanged(Location location);
    }
    
  2. В классе, который обрабатывает обновления местоположений, добавьте список слушателей обновлений

    Список слушателей = new ArrayList ();

добавить опцию добавления слушателей

 public void add(LocationUpdateListener listener) {
      listeners.add(listener); 
 }

и теперь используйте этот список для обновления слушателей

AndroidLocationUpdate.onLocationChanged(Location location) { //This is a method where new location comes.
    shoudlUpdateLocations(location);
}

private void shouldUpdateLocations(Location location) {
    if(location.getSpeed()>3) { //can have your own logic
        for(LocationUpdateListener listener : listeners) {
        listener.onLocationChanged(location);
        }
    }
}
  1. Добавьте слушателей в свою деятельность

class.add (это); // деятельность, реализующая интерфейс

Надеюсь, это поможет.

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