Различие между SurfaceView и представлением?

Это станет только загруженным однажды, когда класс будет загружен classloader. Этот пример обеспечивает лучшую реализацию Singleton однако, он максимально лениво загружается и ориентированный на многопотоковое исполнение. Кроме того, это работает во всех известных версиях Java. Это решение является самым портативным через различные компиляторы Java и виртуальные машины.


public class Single {

private static class SingleHolder {
   private static final Single INSTANCE = new Single();
}

private Single() {
...load properties...
}

public static Single getInstance() {
    return SingleHolder.INSTANCE;
}

}

на внутренний класс ссылаются не ранее (и поэтому загрузился не ранее загрузчиком класса), чем момент, которым называют getInstance (). Таким образом это решение ориентировано на многопотоковое исполнение, не требуя специальных конструкций языка (т.е. энергозависимый и/или синхронизируемый).

207
задан BartoszKP 8 March 2016 в 11:47
поделиться

3 ответа

Все представления отрисовываются в одном потоке графического интерфейса пользователя, который также используется для всего взаимодействия с пользователем.

Поэтому, если вам нужно быстро обновить графический интерфейс или если рендеринг занимает слишком много времени и влияет на взаимодействие с пользователем, используйте SurfaceView .

208
ответ дан 23 November 2019 в 04:44
поделиться

Основное отличие в том, что SurfaceView можно рисовать с помощью фоновых изображений, но Views - нет. SurfaceViews используют больше ресурсов, поэтому вы не хотите использовать их без необходимости.

44
ответ дан 23 November 2019 в 04:44
поделиться

Я заметил несколько вещей:

  • SurfaceViews содержат хороший механизм визуализации, который позволяет потокам обновлять содержимое поверхности без использования обработчика (хорошо для анимации).
  • Виды поверхности не могут быть прозрачными, они могут появляться только за другими элементами в иерархии видов.
  • Я обнаружил, что они намного быстрее для анимации, чем рендеринг во View.

Для получения дополнительной информации (и отличного примера использования) обратитесь к проекту LunarLander в SDK раздел примеров.

101
ответ дан 23 November 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: