【问题标题】:Create my own EventListener in Android Studio that triggers when the function returns a value在 Android Studio 中创建我自己的 EventListener,当函数返回值时触发
【发布时间】:2018-12-06 17:18:56
【问题描述】:

我目前有一个接收对象位置的类(因此参数不断变化),并且我正在初始化该类并在线程中每秒运行该类中的一个函数,它返回一个整数(-1 如果不存在或错误)。函数返回的整数很重要,因为基于该整数,我将运行一些其他函数,这些函数也将在单独的线程上运行。有没有办法将所有过程转换为使用事件监听器?

我基本上希望该事件在该类中的函数返回除 -1 以外的任何数字时触发,然后我将使用 MainActivity 中的一些函数运行一个单独的线程。

我查看了其他一些线程,例如 Android Custom Event Listener,这有助于让我对如何做有一个好主意,但我不确定在我的情况下是否可以这样做,我试着按照他们说的去做但它没有用。

【问题讨论】:

    标签: java android android-studio event-listener


    【解决方案1】:

    您可以使用自定义界面解决上述问题

    1. 创建接口

      interface LocationUpdateListener {
            int onLocationChanged(Location location);
      }
      
    2. 在处理位置更新的类中,添加更新监听器列表

      List listeners = 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(this); //activity实现接口

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复,有没有办法可以在函数返回而不是位置更新时触发监听器?例如,假设我正在根据位置计算对象的速度,如果速度值在 5 到 30 mph/kph 之间,我将返回速度值,否则返回 -1。如何触发方法的返回值而不是位置更新?可能吗?如果我触发位置更新,随着位置不断变化,它将每隔几秒触发一次
    • @Hussein 我已根据您的查询更新了我的答案。这样您就可以控制何时通知他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2013-09-22
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多