安卓面试题_安卓开发面经(21/30)之序列化全解析

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)


嵌入式


本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对常见安卓高频开发面试题的理解;

网上安卓资料千千万,笔者将继续维护专栏,一杯奶茶价格不止提供答案解析,承诺提供专栏内容免费技术答疑,直接咨询即可。助您提高安卓面试准备效率,为您面试保驾护航!

正文开始⬇

序列化问的问题不算多,掌握以下几个基本就够了。面试官可能会问:

  1. 序列化是什么?⭐⭐⭐⭐
  2. 序列化的作用?什么时候需要序列化? ⭐⭐⭐⭐
  3. Android中序列化方式有几种?说说它们的区别。⭐⭐⭐⭐⭐
  4. Bunder传递对象为什么需要序列化?⭐⭐⭐ 看完以下的解析,一定可以让面试官眼前一亮。

目录

  • 1、序列化是什么?序列化的作用?什么时候需要序列化?
  • 2、如何实现序列化?
    • 2.1 Serializable
    • 2.2 Parcelable
      • 2.2.1 使用方法
      • 2.2.2 Parcelable解析
  • 3、Bunder传递对象为什么需要序列化?
  • 4、Android为什么引入Parcelable?Serialzable和Parcelable的区别?

1、序列化是什么?序列化的作用?什么时候需要序列化?

字节流便于存储且便于传输,序列化的作用有:

  1. 进行网络传输:将对象或者信息数据转换为字节流格式,特别是Base64格式,并通过网络传输给其他人;
  2. 本地永久性存储:将对象转换为字节流并存放于内存,等到需要用到该对象的时候,再从内存读取字节流并再次构建出该对象;
  3. 进行IPC传输:如需要将某个对象的信息传输给其他的进程,则需要先进行序列化,传输到其他进程后,再将其反序列化构建出原来的对象; 那么,针对将对象转换为字节流的过程称之为“序列化”,而将字节流再次构建为对象的则是“反序列化”。

2、如何实现序列化

在Android中有两种实现序列化的方式:

2.1 Serializable

这是Java自带的序列化方法,可以通过实现Serializable接口来实现序列化。序列化后的对象可以进行网络传输,也可以存储到本地磁盘。然而这个方式并不推荐,因为其内部实现原理是通过Java的反射机制,该机制效率相对低,同时会产生很多临时对象,因此就需要频繁地进行垃圾回收;

//构建一个实现了Serializable接口的类
public class XrData implements Serializable {
    public String name;
    public String phone;
}

//序列化
 public static MyFragment newInstance(XrData entity) {
    MyFragment fragment = new MyFragment();
    Bundle bundle = new Bundle();
    bundle.putSerializable("DATA", entity); //1
    fragment.setArguments(bundle);
    return fragment;
}
//反序列化
private void setData(){
    mContact = (XrData) getArguments().getSerializable("DATA"); //2
    if(mContact != null) {
        contact_name.setText(mContact.name);
        contact_phone.setText(mContact.phone);
    }
}

上面注释1就是将entity变量进行序列化,转换为字节流

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Android高频面试题全解析 文章被收录于专栏

#提供免费售后答疑!!花一杯奶茶的钱获得安卓面试答疑服务,稳赚不赔# Android发展已经很多年,安卓资料网上千千万,本专栏免费提供专栏内容技术答疑!!私聊当天必回。在阅读过程或者其他安卓学习过程有疑问,都非常欢迎私聊交流。

全部评论
又是跟大佬学习成为大佬的一天
点赞 回复 分享
发布于 2023-02-16 13:30 江苏
我要偷偷学习然后惊艳所有人
点赞 回复 分享
发布于 2023-02-16 13:48 重庆

相关推荐

02-09 13:09
长安大学 Java
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写 可以看看我帖子简历写法
点赞 评论 收藏
分享
01-21 12:26
暨南大学 golang
点赞 评论 收藏
分享
评论
5
4
分享

创作者周榜

更多
牛客网
牛客企业服务