Thread или Runnable при использовании Canvas и SurfaceView в Android - PullRequest
1 голос
/ 09 февраля 2012

Я заинтересован в создании приложения для рисования 2D для Android с помощью сенсорного ввода.Для этого я буду использовать SurfaceView, поскольку он наиболее эффективен по сравнению с OpenGL, но для этого приложения это должно стать проблемой.

После прочтения документации и обзора (http://developer.android.com/guide/topics/graphics/2d-graphics.html)из SurfaceView и рисования Canvas, кажется, они рекомендуют создать внутренний класс, который расширяет Thread для обработки работы по рисованию.

Разумеется, это имеет смысл, поскольку не блокирует пользовательский интерфейс и не выгружает работу во вторичный поток.Однако я не уверен, почему они не используют внешний класс, который расширяет Thread , или даже лучше, почему бы не использовать Runnable , который является внешним?

Есть ливыгода от того, чтобы оставить это как внутренний класс? И есть ли выгода в расширении Thread в отличие от реализации Runnable для Canvas рисование?

Спасибо!

1 Ответ

1 голос
/ 09 февраля 2012

Ну, в их сценарии они правильно поняли одну вещь, а другую - ИМО:

  1. Решение сделать класс потока внутренним классом приемлемо, потому что этот класс требуется только в этой конкретной части кода, поэтому нет необходимости открывать его снаружи.

  2. Я не очень согласен с расширением Thread. Лучше всего реализовать Runnable и переопределить метод run. Это потому, что вы можете использовать Runnable несколькими различными способами, например, запустить обычный поток, поставить его в очередь в пуле потоков и т. Д. Он также позволяет вам расширять другой класс, если вам нужно, поскольку Runnable просто интерфейс.

...