Из того, что я видел в представлениях Android, они не самые лучшие, если вы планируете делать что-либо с частотой кадров, это очень важно. Они очень быстро набирают обороты, и используемый конвейер передачи сообщений рисует их - часто самая медленная вещь, которую ваша программа будет делать в этом кадре. Я бы просто переместил рендеринг сейчас в OpenGL. Используя SurfaceView, вы все равно можете получить настройку очень быстро (хорошо, SurfaceView тоже не очень хорош, но намного лучше, чем все виды).
Если бы я использовал представления, я бы использовал ваш первый метод и настроил поток синхронизации, использовал его как стандартный цикл игры, который выполняет обновление, затем запускает отрисовку, а затем ожидает, чтобы обеспечить полную 1/30 числа секунда прошла и зацикливается.