WearableListenerService перестает отвечать после того, как телефон бездействуетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 WearableListenerService перестает отвечать после того, как телефон бездействует

Сообщение Anonymous »

У меня странная проблема. Я использую класс DataClient для передачи данных из телефонного приложения в приложение WearOS. В течение многих лет он работал нормально, а затем, после недавнего обновления до WearOS 6, onDataChanged в WearableListenerService перестает отвечать после того, как телефон некоторое время простаивал, например, ночью.
В качестве теста я добавил код MessageClient в приложение для телефона, и onMessageReceived в приложении для часов был активирован, а onDataChanged — нет. Не работает только DataClient.
Что еще более странно, если я принудительно закрою приложение телефона, в приложении часов будет выбран onDataChanged, как если бы запросы были поставлены в очередь на телефоне.
Перезагрузка телефона иногда помогает. Однако перезагрузка часов не помогает.
Это телефон Pixel 9a под управлением Android 16. Это часы Galaxy Watch 7 под управлением WearOS 6.
Приложение для телефона:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

PutDataMapRequest dataMapRequest = PutDataMapRequest.create("/watch");
DataMap dataMap = dataMapRequest.getDataMap();
dataMap.putString("key", "value");

Wearable.getDataClient(this).putDataItem(dataMapRequest.asPutDataRequest())
.addOnSuccessListener(dataItem -> {
//this is hit on the phone
})
}


Приложение для часов:
public class WearableService extends WearableListenerService {

@Override
public void onDataChanged(DataEventBuffer dataEvents) {

//never called on the watch
}
}


Этот код в приложении для телефона сработал:
Wearable.getNodeClient(this).getConnectedNodes().addOnSuccessListener(nodes -> {
for (Node node : nodes)
Wearable.getMessageClient(mContext).sendMessage(node.getId(), "/test", null);
});

Приложение для просмотра:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
//this is hit
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... -been-idle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»