Infos
- Ich habe eine Klasse SensorClass, die einige Sensoren verwaltet.
- Ich habe eine Schnittstelle mit der Methode A().
- Ich habe eine Testerklasse TestClass, die die Schnittstelle mit der Methode A() implementiert und diese Implementierung an SensorClass übergibt. TestClass erweitert Activity.
Zielsetzung
-
Alle X Sekunden muss ich die implementierte Methode der in SensorClass gespeicherten Schnittstelle aufrufen. Es ist ein Rückruf.
-
Ich weiß nicht, wie die Methode A() implementiert ist, so dass sie Ansichten ihrer Aktivität ändern kann.
-
Ich benötige einen Timer, weil ich den Callback - Ausführen der Methode A() aus der gespeicherten Schnittstelle in SensorClass - alle X Sekunden starten möchte. Daher tue ich das Folgende:
public void do (){ timer.scheduleAtFixedRate (new TimerTask (){ public void run (){ storedInterface.A (); } }, 0, speed); }
-
Aber wie gesagt, ich weiß nicht, wie A() implementiert ist. Ich muss die Methode innerhalb von runOnUIThread() ausführen, weil sie Ansichten ändern kann.
private void startCallback (){ runOnUiThread (new Runnable (){ public void run (){ storedInterface.A (); } }); }
public void do (){ timer.scheduleAtFixedRate (new TimerTask (){ public void run (){ startCallback (); } }, 0, speed); }
-
Problem: SensorClass ist keine Activity, so dass runOnUIThread() einen Fehler verursacht.
Mögliche Abhilfe
Erweitern Sie SensorClass von einer Activity, aber SensorClass ist keine Activity mit Methoden onCreate(), onPause(), etc!!! Diese Lösung gefällt mir nicht.
Meine Frage ist: Wie kann ich runOnUIThread() innerhalb einer Klasse aufrufen, die nur einen Kontext von einer Activity empfängt? Oder... Gibt es eine andere Lösung für mein Problem?
Danke.