#android #android-widget
#Android #android-виджет
Вопрос:
Я пытаюсь реализовать виджет домашнего экрана Android. Мне интересно знать, почему я должен использовать RemoteViews при реализации виджетов?
Ответ №1:
Обратитесь к этой ссылке на сайте.
Создать макет виджета приложения просто, если вы знакомы с объявлением макета в XML. Однако вы должны знать, что макеты виджетов приложений основаны на RemoteViews, которые поддерживают не все виды макетов или виджетов просмотра.
Объект RemoteViews (и, следовательно, виджет приложения) может поддерживать следующие классы компоновки:
FrameLayout
LinearLayout
RelativeLayout
И следующие классы виджетов:
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
Потомки этих классов не поддерживаются.
Комментарии:
1. Спасибо, но я не понимаю, почему Android team решила использовать RemoteViews
2. По соображениям безопасности. Используя RemoteViews, мы можем гарантировать, что приложение не будет выполнять код внутри другого процесса (например, Launcher.) Таким образом, невозможно воспользоваться привилегиями, предоставленными другому процессу (Launcher.)
Ответ №2:
Большую часть времени виджет размещается в другом приложении, таком как Launcher, которое запускается в процессе этого родительского приложения.
RemoteViews описывает иерархию представлений, которая может отображаться в другом процессе. Иерархия создается из файла ресурсов макета, и этот класс предоставляет некоторые базовые операции для изменения содержимого расширенной иерархии.
Основная причина такого выбора связана с безопасностью и производительностью.
Ответ №3:
RemoteViews используется для виджетов приложений. Они являются частью отдельного процесса, но привязаны к основному процессу, т. Е. Почему, когда мы нажимаем на виджеты, он перенаправляет на соответствующее приложение с более подробной информацией.