電話のアプリで色をカスタマイズできるウォッチフェイスを作成しています。
DataApi
と を使用してDataItem
設定を保存/ロードする例を見てきました。
私が遭遇している問題は、別のウォッチフェイスに変更して元に戻すと、内部のすべての値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);
色の値の送信/取得は実行中に機能し、データを 0 に戻すことはありませんonDestroy()
。onStop()
アクティビティ/ウォッチフェイスが閉じられるとdataItemsは自動的に「破棄」されますか、それとも間違って実装していますか?
助けてくれてありがとう!