Я создаю циферблат, цвет которого можно настроить через приложение на телефоне.
Я видел примеры использования DataApi
и DataItem
для сохранения/загрузки настроек.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я переключаюсь на другой циферблат и возвращаюсь обратно, все значения внутри DataMap
кажутся сбрасываемыми на ноль или 0.
Вот пример моего метода onCreate()
циферблата Wear, который попытается загрузить последний использованный цвет:
PendingResult<DataItemBuffer> results = Wearable.DataApi.getDataItems(mGoogleApiClient);
results.setResultCallback(new ResultCallback<DataItemBuffer>() {
@Override
public void onResult(DataItemBuffer dataItems) {
if (dataItems.getCount() != 0) {
for (int i = 0; i < dataItems.getCount(); i++) {
DataMapItem dataMapItem = DataMapIfromDataItem(dataItems.get(i));
if (dataMapItem.getDataMap().containsKey(COLOR_KEY)) {
mSelectedColor = dataMapItem.getDataMap().getInt(COLOR_PATH);
}
}
}
dataItems.release();
}
});
Обратите внимание, что строка mSelectedColor = dataMap...
вернет 0.
Вот пример кода из мобильного приложения, в котором будут храниться эти данные:
PutDataMapRequest dataMap = PutDataMapRequest.create(COLOR_PATH);
dataMap.getDataMap().putInt(COLOR_KEY, mSelectedColor);
Отправка/получение значения цвета работает во время работы, а onDestroy()
или onStop()
не изменяет данные обратно на 0.
Являются ли элементы данных автоматически «удаляемыми», когда действие/циферблат закрывается, или я неправильно это реализую?
Спасибо за помощь!