定时器与回调

信息

  • 我有一个SensorClass类来管理一些传感器。
  • 我有一个方法A()的接口。
  • 我有一个测试器类TestClass,它实现了方法A()的接口并将此实现传递给SensorClass。 TestClass扩展了Activity。
  • 目的

  • 每隔X秒我需要调用存储在SensorClass中的接口的已实现方法。 这是一个回调。
  • 我不知道如何实现方法A(),因此它可以修改其活动的视图。
  • 我需要一个Timer,因为我想每隔X秒从SensorClass中存储的接口启动回调 - 执行方法A()。 因此,我做了以下工作:
  • public void do (){
     timer.scheduleAtFixedRate (new TimerTask (){
      public void run (){
       storedInterface.A ();
      }
     }, 0, speed);
    }
    
  • 但正如我所说,我不知道如何实现A()。 我必须在runOnUIThread()中运行该方法,因为它可以修改视图。
  • private void startCallback (){
     runOnUiThread (new Runnable (){
      public void run (){
       storedInterface.A ();
      }
     });
    }
    
    public void do (){
     timer.scheduleAtFixedRate (new TimerTask (){
      public void run (){
       startCallback ();
      }
     }, 0, speed);
    }
    
  • 问题:SensorClass不是一个Activity,所以runOnUIThread()会导致错误。
  • 可行的解决方法

    从Activity中扩展SensorClass,但SensorClass不是带有方法onCreate(),onPause()等的Activity! 我不喜欢这个解决方案。


    我的问题是:如何在只接收来自Activity的上下文的类中调用runOnUIThread()? 或者...有没有其他解决方案来解决我的问题?

    谢谢。


    解决使用处理程序。 伟大的工具!

    public void do (){
        final Handler handler = new Handler ();
        timer.scheduleAtFixedRate (new TimerTask (){
            public void run (){
                handler.post (new Runnable (){
                    public void run (){
                        storedInterface.A ();
                    }
                });
            }
        }, 0, speed);
    }
    
    链接地址: http://www.djcxy.com/p/74935.html

    上一篇: Timer with callback

    下一篇: Why is my scheduleAtFixedRate being ignored in my code..?