3
информацияТаймер с обратным вызовом
- У меня есть класс, который управляет SensorClass некоторых датчиков.
- У меня есть интерфейс с методом A().
- У меня есть класс тестера TestClass, который реализует интерфейс с помощью метода A() и передает эту реализацию в SensorClass. TestClass расширяет активность.
Объективные
- Каждый Х секунд нужно вызвать реализованный метод интерфейса, хранящегося в SensorClass. Это обратный вызов.
- Я не знаю, как реализован метод A(), чтобы он мог изменять виды своей активности.
- Мне нужен таймер, потому что я хочу запустить метод callback -executing A() из хранимого интерфейса в SensorClass - каждые X секунд. Таким образом, я делаю следующее:
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 не является активность, так runOnUIThread() приведет к ошибке.
Возможное обходной
Продлить SensorClass от активности, но SensorClass не является активность с помощью методов OnCreate(), OnPause(), и т.д !!! Мне не нравится это решение.
Мой вопрос: Как я могу вызвать runOnUIThread() в классе, который получает только контекст из Activity? Или ... Есть ли другое решение для моей проблемы?
Спасибо.
+ 1, + 1, отличный вопрос, отличный ответ –