鸿蒙应用开发之分布式数据服务

需求:有两台设备,在左边的设备中上下两个文本框中输入数据,点击保存,右边的设备通过key获取数据且获取到的数据和左边的设备是一致的

鸿蒙应用开发之分布式数据服务_第1张图片

 ability_main.xml




    
    
    
    
    
    

MainAbilitySlice.java
package com.gulixiong.distributeddata.slice;

import com.gulixiong.distributeddata.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.TextField;
import ohos.data.distributed.common.*;
import ohos.data.distributed.user.SingleKvStore;

public class MainAbilitySlice extends AbilitySlice {

    private TextField key;
    private TextField value;

    private Button saveData;
    private Button getData;

    private TextField getContent;

    private SingleKvStore kvStore;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        initDB();
        initUI();
        setListeners();
    }

    private void initDB() {
        //创建分布式数据库管理实例
        KvManagerConfig config=new KvManagerConfig(this);
        KvManager kvManager = KvManagerFactory.getInstance().createKvManager(config);

        //创建分布式数据库
        Options options=new Options();
        options.setCreateIfMissing(true).setEncrypt(false).setKvStoreType(KvStoreType.SINGLE_VERSION);
        //指定数据库名称
        String dbName="testDb";
        kvStore=kvManager.getKvStore(options,dbName);
    }

    private void initUI() {
        key = (TextField) findComponentById(ResourceTable.Id_key);
        value = (TextField) findComponentById(ResourceTable.Id_value);
        saveData= (Button) findComponentById(ResourceTable.Id_saveData);
        getData= (Button) findComponentById(ResourceTable.Id_getData);
        getContent = (TextField) findComponentById(ResourceTable.Id_getContent);
    }

    private void setListeners(){
        saveData.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
               saveData();
            }
        });
        getData.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
               getData();
            }
        });
    }

    /**
     * 保存数据
     */
    private void saveData(){
        String keyData=key.getText();
        String valueData=value.getText();
        kvStore.putString(keyData,valueData);
        getContent.setText("保存数据成功");
    }

    private void getData(){
       String keyData=key.getText();
       String content = kvStore.getString(keyData);
       getContent.setText(content);
    }

    private void deleteData(){
      String keyData=key.getText();
      kvStore.delete(keyData);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

注意:两个设备要同时出现相同的界面的操作如下:

鸿蒙应用开发之分布式数据服务_第2张图片

点击第一个箭头处的三角,会看到有两台设备,默认上面的设备框中展示的是编号小的设备,点击运行按钮

鸿蒙应用开发之分布式数据服务_第3张图片

将设备列表切换到第二台设备,然后点击运行按钮

鸿蒙应用开发之分布式数据服务_第4张图片 双击第一台设备上你写的程序

鸿蒙应用开发之分布式数据服务_第5张图片

 效果如下:

鸿蒙应用开发之分布式数据服务_第6张图片

 现在就可以测试了

你可能感兴趣的:(鸿蒙应用开发,harmonyos)