下面是实现的关键代码:
手机端数据存储:
//初始化获取SingleKvStore对象
KvManagerConfig kvManagerConfig = new KvManagerConfig(context);
kvManager = KvManagerFactory.getInstance().createKvManager(kvManagerConfig);
Options options = new Options();
options.setCreateIfMissing(true)
.setEncrypt(false)
.setKvStoreType(KvStoreType.SINGLE_VERSION)
.setAutoSync(true);
SingleKvStore singleKvStore = kvManager.getKvStore(options, storeId);
将采集到的传感器数据,存储在分布式数据库:
singleKvStore.putString("key",
" +…此处省略
"}");
TV端进行数据获取:
//初始化singleKvStore,并为其注册监听器kvStoreObserverClient,观察数据变化:
KvManagerConfig config = new KvManagerConfig(getContext());
KvManager kvManager = KvManagerFactory.getInstance().createKvManager(config);
Options CREATE = new Options();
CREATE.setCreateIfMissing(true).setEncrypt(false).setKvStoreType(KvStoreType.SINGLE_VERSION)
.setAutoSync(true);
singleKvStore = kvManager.getKvStore(CREATE, Constant.KV_STORE_NAME);
kvStoreObserverClient = new KvStoreObserverClient();
singleKvStore.subscribe(SubscribeType.SUBSCRIBE_TYPE_ALL, kvStoreObserverClient);
//实现KvStoreObserver,重新onChange()方法,获取分布式数据,更新UI需要切换到主线程。
private class KvStoreObserverClient implements KvStoreObserver {
@Override
public void onChange(ChangeNotification notification) {
String value = singleKvStore.getString("***");
DataCollectionEntry entry = ZSONObject.stringToClass(value, DataCollectionEntry.class);
getUITaskDispatcher().asyncDispatch(() -> initView(entry));
}
}
从报名HarmonyOS开发者创新大赛开始,团队从一群从来没有配合过的HarmonyOS新手开发者成长为了专业开发者。参加大赛也让团队深刻感受到了HarmonyOS强大的分布式技术以及先进的设计理念,为今后开发更具创意和社会价值的作品打下了坚实的基础。
星光不问赶路人,每一位HarmonyOS开发者都是华为汇聚的星星之火,希望越来越多的开发人才能够加入到HarmonyOS开发者生态,一起创造无限可能!