我开始开发我的第一个Android Wear表盘,但在理解设置概念时遇到了一些问题。
我表盘的用户应该能够在表上直接设置一些首选项-例如不同的颜色。
但是这些设置应如何在手表上保留下来?Google的所有示例均使用Wearable.NodeApi.getLocalNode。但是据我了解,这旨在通过互联网同步不同手表之间的设置。至少根据https://developer.android.com/training/wearables/data-layer/index.html上的指南
但是这种机制是否也使设置具有持久性,还是我必须自己实现持久性(例如,使用SharedPreferences)。
我对此主题的看法是,如果我更改这些设置(例如,通过手机上的UI),则这些设置将通过DataItems与我的所有手表同步-但随后在每只手表上我都必须存储这些设置。它是否正确?
在一般情况下,DataApi
会在本地保持数据项会话之间-但它是不可靠的,并且很多不太方便,比使用SharedPreferences
。如您所述,它主要用于在设备之间同步数据。存储数据是事后的想法。以我的经验,数据存储和同步有足够的不同,您需要分别使用针对每个API的API来分别实现两者。
但是,没有必要重新发明轮子。如果您的表盘在两个设备上都需要同时同步到另一台设备和本地存储的配置,我建议您看一下PrefSyncService。这是我为这种用例设计的一个开源Android类。
要将配置更改从手机应用到正在运行的表盘,请使用OnSharedPreferenceChangeListener
。在您的中Engine
,使用类似以下的代码:
private class Engine
extends CanvasWatchFaceService.Engine
implements SharedPreferences.OnSharedPreferenceChangeListener {
private SharedPreferences settings;
@Override
public void onCreate(SurfaceHolder surfaceHolder) {
super.onCreate(surfaceHolder);
settings = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
settings.registerOnSharedPreferenceChangeListener(this);
...other setup code...
}
@Override
public void onDestroy() {
settings.unregisterOnSharedPreferenceChangeListener(this);
...other teardown code...
super.onDestroy();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences settings, String key) {
...update your watch face here...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句