Esa sería una forma de hacerlo, en el onPostExecute del AsyncTask actualizas el Adapter del ListView (siempre y cuando hayan cambios).
En cuanto a la forma de hacer que se ejecute cada, por ejemplo, 5 segundos. La forma más rápida que se me ocurre es que en el onPostExecute al final vuelvas a crear otra vez el mismo AsyncTask, así se estaría llamando continuamente de forma "recursiva" (realmente sería iterativa, porque no se va acumulando en una pila, simplemente que uno llama a otro, pero el anterior termina). Y para controlar el tiempo, puedes hacerlo en el doInBackground, que lo primero que haga sea un Thread.sleep del tiempo que quieres que pase entre cada llamada.
Aunque es una forma un poco "sucia" de resolver el problema, pero por lo pronto para salir del paso te vale.