KeyValueX:ボイラープレートコードを排除し、AndroidプロジェクトをKV爆発から解放します

バックグラウンド

深夜の独白から:

数十または数百のキー値を定義するのが一般的ですが、もっと簡単な方法はありますか?

これは、プロジェクト内で制御されていない数少ない場所の1つであり、指数関数的に拡大し、一貫性の隠れた危険を簡単に埋めることができます。

新しい値が追加されるたびに、key、get、put、init、5つの場所を考慮する必要があります...

public class Configs {
  
  ...
    
  private static int TEST_ID;
  
  public final static String KEY_TEST_ID = "KEY_TEST_ID";
  
  public static void setTestId(int id) {
    TEST_ID = id;
    SPUtils.getInstance().put(KEY_TEST_ID, id);
  }
  
  public static int getTestId() {
    if (IS_XXXX()) return TEST_ID;
    return UUID.ramdom().toString();
  }
  
  public static void initConfigs() {
    TEST_ID = SPUtils.getInstance().getInt(KEY_TEST_ID, 0);
  }
}

その後、次々と改善の提案を受け、「属性エージェント」と言って、DylanCaiオープンソースライブラリMMKV-KTXを勧めてくれた友達もいました。

同時に、「属性プロキシ」に触発されて、キー、値、取得、配置、および初期化をJavaの単一の設計に減らす設計を思いつきました。

implementation 'com.kunminx.arch:key-value:1.2.0-beta'

3ステップの曲を使用します。

1. POJOを読み書きする場合は、Serializableインターフェイスを実装する必要があります

public class User implements Serializable {
  public String title;
  public String content;
}

2.いつものように、Configsのようなプロジェクト構成管理クラスを作成します

//Configs 中不再定义一堆 KEY、VALUE 常量和 get、put、init 静态方法,
//只需一条条 KeyValue 静态变量:
​
public class Configs {
  public final static KeyValueString accountId = new KeyValueString("accountId");
  public final static KeyValueSerializable<User> user = new KeyValueSerializable<>("user");
}

3.ページのget()set()メソッドなどを使用してKeyValueを読み書きします。

public class MainActivity extends AppCompatActivity {
  ...
          
  //测试持久化写入
  Configs.user.set(u);
​
  //测试读取
  Log.d("---title", Configs.user.get().title);
  Log.d("---content", Configs.user.get().content);
}

KeyValueXは、デフォルトでSharedPreferenceを使用して読み取りと書き込みを行い、KeyValueToolに従ってMMKVおよびその他の実装を挿入することもできます(詳細については、MainActivityの例を参照してください)。

現在、ライブラリはオープンソースであり、フィードバックを歓迎します。

Github:KeyValueX

おすすめ

転載: juejin.im/post/7121955840319291428