【问题标题】:Android Bundle vs Java plain object (POJO) - serialization/de-serialization performanceAndroid Bundle 与 Java 普通对象 (POJO) - 序列化/反序列化性能
【发布时间】:2023-04-01 06:20:02
【问题描述】:

我正在将一些数据从一个活动传递到另一个活动。我有以下两种解决方案:

  1. 使用捆绑包

    Bundle args = new Bundle();
    
    args.put ("key1",  serializable_object1);
    args.put ("key2",  serializable_object2);
    args.put ("key3",  serializable_object3);
    
    Intent intent = new Intent(this, MyActivity.class);
    intent.putExtra ( "args", args );
    
  2. 使用 Java 普通对象

    public class FragModel implements Serializable {
    
        public Serializable key1;
        public Serializable key2;
        public Serializable key3;
    }
    
    Intent intent = new Intent(this, MyActivity.class);
    FragModel model = new FragModel();
    
    model.key1 = serializable_object1;
    model.key2 = serializable_object2;
    model.key3 = serializable_object3;
    
    // ....
    intent.putExtra ( "args",  model );
    

我的问题是哪种解决方案的性能更好?更适合序列化/反序列化?

有人有什么想法吗?谢谢!

【问题讨论】:

    标签: java android performance serialization deserialization


    【解决方案1】:

    Bundle是android平台默认提供的通信和数据传输方式。您也可以在 android 中使用序列化,但不推荐。尝试 Parceable 作为序列化的替代方法。 这是取自安卓developer site

    警告:此接口限制了其实现类在未来的更改方式。通过实现 Serializable,您可以将灵活的内存实现细节公开为严格的二进制表示。当更改的类可序列化时,简单的代码更改(例如重命名私有字段)是不安全的。

    至于性能,我只能说serialize的性能最差。我不知道 Parceable 和 Bundle 在性能上的区别。

    【讨论】:

    • 谢谢!我想如果 FragModel 实现了 Bundle。 FragModel 会比 Bundle 有更好的性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多