当前位置:   article > 正文

【Harmony OS】【JAVA UI】鸿蒙系统中怎么使用Parcel进行存储数据或数据传递_鸿蒙 java数据库交互

鸿蒙 java数据库交互
  1.  Parcel简介

    IPC过程中,发送方可以使用Parcel提供的写方法,将待发送的数据以特定格式写入Parcel对象。接收方可以使用Parcel提供的读取方法从Parcel对象中读取特定格式的数据。

    Parcel实例的默认容量为200KB。如果您想要更多或更少,请使用setCapacity(int)更改它。

    注意:只有以下数据类型的数据才能写入或从包裹中读取: byte, byteArray, short, shortArray, int, intArray, long, longArray, float, floatArray, double, doubleArray, boolean, booleanArray, char, charArray, String, StringArray、 PlainBooleanArray, Serializable, Sequenceable, 和 SequenceableArray。

  2. 方法介绍

    2.1 addAppClassLoader(ClassLoader newClassLoader)public void addAppClassLoader(ClassLoader newClassLoader)添加第三方ClassLoader用于实例初始化。如果您需要封装或取消封装自定义序列化数据,请添加您自己的ClassLoader。

    2.2 writeSequenceablepublic final void writeSequenceable(Sequenceable val)将可序列化对象写入Parcel实例。其余的方法参考文档Parcel资料

  3. 封装Sequenceable实体类我们参考Sequenceable资料

  4. 动手实践

    今天将一个Sequenceable的集合存到Parcel然后读取出来
    4.1 新建两个类 A类用户存放具体属性,B类用于存放A的实体类集合
    A类代码如下

    1. public static class A implements Sequenceable {
    2. private int a;
    3. private int b;
    4. private int c;
    5. public A() {
    6. this(0, 0, 0);
    7. }
    8. public A(int a, int b, int c) {
    9. this.a = a;
    10. this.b = b;
    11. this.c = c;
    12. }
    13. @Override
    14. public boolean hasFileDescriptor() {
    15. return false;
    16. }
    17. @Override
    18. public boolean marshalling(Parcel out) {
    19. out.writeInt(a);
    20. out.writeInt(b);
    21. out.writeInt(c);
    22. return true;
    23. }
    24. @Override
    25. public boolean unmarshalling(Parcel in) {
    26. a = in.readInt();
    27. b = in.readInt();
    28. c = in.readInt();
    29. return true;
    30. }
    31. public static final Sequenceable.Producer<A> PRODUCER = new Sequenceable.Producer<A>() {
    32. public A createFromParcel(Parcel in) {
    33. A instance = new A();
    34. instance.unmarshalling(in);
    35. return instance;
    36. }
    37. };
    38. @Override
    39. public boolean equals(Object o) {
    40. if (this == o) return true;
    41. if (o == null || getClass() != o.getClass()) return false;
    42. A
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/314675
推荐阅读
相关标签
  

闽ICP备14008679号