Как выбрать тип клиента

API уровня данных Wear OS состоят из нескольких типов клиентов, которые полезны для разных типов данных и при разных условиях подключения.

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

Когда использовать Data Layer API

Используйте Data Layer API, если взаимодействие происходит только между часами и телефоном. Подробные примеры можно найти в статье Примеры использования слоя данных.

Клиент данных

Объект DataClient позволяет читать или записывать данные в DataItem или Asset:

  • Каждый DataItem – это единица информации, которая передается и синхронизируется на всех устройствах пользователя, находящихся поблизости. DataItem хранится постоянно, и устройство может считывать его содержимое, пока объект данных не будет удален.

  • Asset предназначен для передачи больших объемов данных, например изображений или медиафайлов.

Клиент обмена сообщениями

Объект MessageClient может отправлять сообщения и подходит для удаленных вызовов процедур (RPC), например для управления версией приложения, установленной на портативном устройстве, с помощью устройства Wear OS.

Сообщения отлично подходят для односторонних запросов с использованием sendMessage() или для модели "запрос-ответ" с использованием sendRequest(). В отличие от клиентов данных, клиентам сообщений для отправки сообщений необходимо, чтобы узлы были подключены к сети.

Метод sendMessage() – это попытка доставить данные на удаленный узел, и он не содержит встроенного механизма повторных попыток. Если целевое устройство отключается до начала передачи данных по сети, метод возвращает значение TARGET_NODE_NOT_CONNECTED.

Клиент канала

Объект ChannelClient обеспечивает потоковую передачу данных между устройствами. Канал – это двунаправленный канал связи между двумя узлами, который полезен в следующих случаях:

  • Передавать файлы данных между двумя или более подключенными устройствами, когда нет доступа к интернету. ChannelClient экономит место на диске по сравнению с DataClient, который создает копию объектов на локальном устройстве перед синхронизацией с подключенными устройствами.
  • Надежно отправлять файлы, которые слишком велики для отправки с помощью MessageClient.
  • передавать потоковые данные, например голосовые данные с микрофона;

После открытия канала вы можете отправлять и получать данные в виде непрерывного потока байтов, а не отдельных единиц DataItem, как требуется клиентам данных.

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

Сравнение клиентов

В таблице ниже сравниваются возможности разных клиентов.

Тип клиента Сохранение данных Поддерживает ли он данные размером более 100 КБ? Сеть Возможна ли работа в автономном режиме?
Клиент данных Данные хранятся бессрочно Да (используйте объекты Asset) Предпочтительно подключение по Bluetooth. Резервное копирование данных в облако. Если доступен Bluetooth, копирование выполняется асинхронно. Да, для чтения и записи
Клиент для обмена сообщениями Не сохраняет данные и не выполняет повторных вызовов Нет Предпочтительнее Bluetooth, но можно использовать Wi-Fi, если это единственный доступный тип подключения. Нет
Клиент канала Без сохранения состояния (ориентированный на подключение) Да Предпочтительнее Bluetooth, но можно использовать Wi-Fi, если это единственный доступный тип подключения. Нет

Дополнительную информацию о работе с API уровня данных можно найти в руководстве Синхронизация данных. Информацию о том, как экономить заряд батареи при использовании API уровня данных, можно найти в руководстве по энергосбережению.