有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Android Studio中创建我自己的EventListener,当函数返回值时触发

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

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

我看了一些其他的线程,比如Android Custom Event Listener,这有助于给我一个关于如何做的好主意,但我不确定在我的情况下是否可以这样做,我试着按照他们说的做,但没有成功


共 (1) 个答案

  1. # 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 implement the interface

    希望有帮助