Android 带回调的计时器

Android 带回调的计时器,android,multithreading,timer,Android,Multithreading,Timer,信息 我有一个类SensorClass,它管理一些传感器 我有一个与方法A()的接口 我有一个tester类TestClass,它使用方法a()实现接口,并将此实现传递给SensorClass。TestClass扩展了活动 目标 每隔X秒,我需要调用存储在SensorClass中的接口的实现方法。这是回拨电话 我不知道方法A()是如何实现的,因此它可以修改其活动的视图 我需要一个计时器,因为我想每隔X秒从SensorClass中存储的接口启动回调执行方法a()。因此,我做了以下工作: 公

信息

  • 我有一个类SensorClass,它管理一些传感器
  • 我有一个与方法A()的接口
  • 我有一个tester类TestClass,它使用方法a()实现接口,并将此实现传递给SensorClass。TestClass扩展了活动
目标

  • 每隔X秒,我需要调用存储在SensorClass中的接口的实现方法。这是回拨电话
  • 我不知道方法A()是如何实现的,因此它可以修改其活动的视图
  • 我需要一个计时器,因为我想每隔X秒从SensorClass中存储的接口启动回调执行方法a()。因此,我做了以下工作:
公开作废do(){ timer.scheduleAtFixedRate(新的TimerTask(){ 公开作废运行(){ storedInterface.A(); } },0,速度); }
  • 但正如我所说,我不知道A()是如何实现的。我必须在runOnUIThread()中运行该方法,因为它可以修改视图
专用无效startCallback(){ runOnUiThread(新的可运行(){ 公开作废运行(){ storedInterface.A(); } }); } 公开作废do(){ timer.scheduleAtFixedRate(新的TimerTask(){ 公开作废运行(){ startCallback(); } },0,速度); }
  • 问题:SensorClass不是活动,因此runUnuithRead()将导致错误
可行的解决方法

从活动扩展SensorClass,但SensorClass不是具有onCreate()、onPause()等方法的活动!!!我不喜欢这个解决方案。


我的问题是:如何在一个只从活动接收上下文的类中调用runOnUIThread()?或我的问题还有别的解决办法吗


谢谢。

使用handler解决。伟大的工具

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); } 公开作废do(){ 最终处理程序=新处理程序(); timer.scheduleAtFixedRate(新的TimerTask(){ 公开作废运行(){ handler.post(新的可运行(){ 公开作废运行(){ storedInterface.A(); } }); } },0,速度); } private void startCallback (){ runOnUiThread (new Runnable (){ public void run (){ storedInterface.A (); } }); } public void do (){ timer.scheduleAtFixedRate (new TimerTask (){ public void run (){ startCallback (); } }, 0, speed); } 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); }