2013-03-19 2 views
1

Мое приложение surfviewview - это то, где большинство моих приложений, и я хотел бы уменьшить его отставание, поэтому мне сказали снять его с темы пользовательского интерфейса. Можно ли запустить SurfaceView в AsyncTask?Run SurfaceView off UI Thread

+1

Вы не можете запустить UI из потока пользовательского интерфейса. Вы получите исключение CalledFromWrongThread. Тем не менее, вы могли бы обрабатывать все материалы обработки, которые сообщают вам *, где *, рисовать в фоновом потоке, а затем делать только фактический чертеж * в потоке пользовательского интерфейса. –

+2

SurfaceView предназначен для рисования в фоновом потоке: для достижения этой цели вы можете использовать методы lockCanvas() и unlockCanvasAndPost() для SurfaceHolder. –

ответ

1

Хотя можно рисовать в SurfaceView из AsyncTask, это не рекомендуется. AsyncTasks может запускаться в последовательной очереди, поэтому вы, вероятно, блокируете другие задачи. Вместо этого просто используйте Thread. SDK содержит пример приложения LunarLander, который показывает, как это сделать.