Я почти уверен, что вам не нужно ничего "перерисовывать" вручную.Как только вы измените содержимое вашего макета (и как только Android сможет обойти его (что будет намного быстрее, чем через 3 секунды)), вы увидите обновленный экран.Относительно того, из какого потока вы делаете это, вы можете изменять макеты только из основного потока, насколько я знаю, но вы можете вызывать методы Runnable в этом потоке через обработчик из любого места.