Вызов runnable в таймере

105
25 марта 2021, 17:20

Есть ли проблема в этом коде:

Внутри активити, каждые 10 секунд в таймере вызывается следующий код

getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
        textView.setText(getText());
    }
});

анонимный Runnable каждый раз будет выполняться и удаляться из памяти? или пока не остановишь таймер будет забивать память новым экземпляром? И что будет после выхода из этого активити? кроме NPE

Answer 1

Отработавшие экземпляры будет прибирать GC, но не моментально, что при высокой частоте создания анонимов или загрузке процессора может привести к OOM.
К тому же будут расходоваться часть ресурсов на создание и очистку этих объектов.
Если выйти из активности, не остановив таймер, то он, как и любой поток будет удерживать в памяти всё, на что ссылается и продолжать плодить анонимы.

P.S. В вашем примере можно использовать один экземпляр, созданный до старта таймера.

READ ALSO
Циклы ломают всё

Циклы ломают всё

Есть: массив StringBuilder but, StringBuilder str и массив int indexesДобавляю в массив строителей строки до тех пор, пока а меньше размера другого массива (в этом...

121
Подключение к камере Android

Подключение к камере Android

Пытаюсь выводить изображение с камеры на экран, делаю это так:

102
Не работает foreach в JSTL

Не работает foreach в JSTL

Вот jsp файл:

177
Не пойму почему не проходит тест

Не пойму почему не проходит тест

это моя тестовая конфигурация:

113