我正在创建一个可以通过手机上的应用程序自定义颜色的表盘。
我已经看到示例使用DataApi
andDataItem
来保存/加载设置。
我遇到的问题是,当我更改为不同的表盘并改回时,其中的所有值DataMap
似乎都重置为 null 或 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。
当活动/表盘关闭时,dataItems 是否会自动“处置”,还是我执行此操作有误?
感谢您的帮助!