Вы можете использовать класс HandlerThread для создания потока, как показано ниже:
HandlerThread handlerThread = new HandlerThread("MyHandler");
handlerThread.start();
Looper looper = handlerThread.getLooper();
Handler handler = new Handler(looper);
После этого запустите ваш runnable следующим образом:
handler.postDelayed(() -> {
// runnable code here
// call again thread after 1000 millis
handler.postDelayed(this, 1000);
}, 1000);
Класс HandlerThread, так как каждый класс вJava, наследуется от Object
класса, который имеет wait()
метод.Если вы проверяете документацию, он говорит: «Заставляет текущий поток ждать, пока другой поток не вызовет метод notify()
или метод notifyAll()
для этого объекта».Вы должны приостановить поток, вызвав handlerThread.wait()
в соответствии с жизненным циклом вашей деятельности, например, внутри метода onPause()
.Не забывайте вызывать notify()
в том же экземпляре потока, когда ваша деятельность возобновляется, как правило, внутри метода onResume()
.Позвоните handler.removeCallbacks
, когда вы закончите:)