Я вижу проблему в том, что вы создаете анонимный метод. Он не может быть легко доступен благодаря тому факту, что вы создали его как анонимный метод.
Я бы предложил переместить ваш метод "launchTask" в собственный класс, реализовать интерфейс Runnable и рассматривать его как поток. Таким образом, вы можете запускать и останавливать его по мере необходимости, а также создавать (несколько) его экземпляров.
http://tutorials.jenkov.com/java-concurrency/creating-and-starting-threads.html
В этот момент вы можете передать свой «тайм-аут» классу и, возможно, остановиться самостоятельно. Это пример класса, который останавливает себя по ссылке выше. Вы должны иметь возможность включить конструктор с параметром, который позволит вам установить время ожидания. Вы также можете включить любой код для сохранения записи в методе «doStop». Таким образом, вы можете сделать класс полностью охватывающим весь код / методы, необходимые для этой функции, чистым способом ООП.
public class MyRunnable implements Runnable {
private boolean doStop = false;
public synchronized void doStop() {
this.doStop = true;
}
private synchronized boolean keepRunning() {
return this.doStop == false;
}
@Override
public void run() {
while(keepRunning()) {
// keep doing what this thread should do.
System.out.println("Running");
try {
Thread.sleep(3L * 1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Если вам нужно управлять потоком из текущего местоположения, вы можете сделать это (также со связанной страницы):
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
try {
Thread.sleep(10L * 1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
myRunnable.doStop();
}
Edit:
Я только что вспомнил, что Google сейчас запрещает тайное использование микрофона и камеры на устройствах. Если видео не отображается, вы не сможете использовать камеру и аналогичные функции для микрофона. Я не выступаю против вашего использования, так как я не знаю, что это такое, я просто говорю, чтобы быть осторожным, для чего вы его используете, и знать, что могут быть случаи, когда Google делает ошибки при фильтрации / поиск вещей, которые он не позволяет.
https://www.theverge.com/2018/3/7/17091104/android-p-prevents-apps-using-mic-camera-idle-background