代码与Java代码主要有两点不同之处: 1、在类内部指代自身的this关键字,Java的完整写法是“类名.this”,而Kotlin的完整写法是“this@类名”,当然二者均可简写为“this”;...2、获取某个类的class对象,Java的写法是“类名.class”,而Kotlin的写法是“类名::class.java”,一看便知带有浓浓的Java风味; 看起来,Kotlin代码与Java代码半斤八两...譬如前面的活动跳转传递了两个字段数据,如果把这两个字段放到Parcelable对象中,仅仅包含两个字段的Parcelable类对应的Java代码也如下面这般冗长: public class MessageInfo...在第五章的类和对象中,介绍了Kotlin对数据类的写法,在类名前面关键字data,Kotlin即可自动提供get/set、equals、copy、toString等诸多方法。...虽然自定义的MessageInfo类内部没有任何一行代码,但是它除了具备数据类的所有方法,也自动实现了Parcelable接口的几个方法。
Day 10:Data 类和 equality 可以创建具有一个具有处理数据的类吗?将它们标记为 "Data" 类。...Day 13:从 Java 编程语言调用 Kotlin 在同一个项目中使用 Kotlin 和 Java?您有没有顶级功能或属性的课程?默认情况下,编译器将生成类名称 YourFileKt。...第三周 Day 15:sealed 类 Kotlin 的 sealed 类可以让您轻松的处理错误数据,当结合 LiveData 您可以用一个 LiveData 同时代表成功和失败的路径,这比用两个不变量要好...通过 Kotlin,您可以实现自己的操作符。 Day 21:顶级方法和参数 类的实用方法?将它们添加到源文件的顶层。在 Java 中,它们被编译为该类的静态方法。 您是否为您的类定义了静态常量?...第三周学习小结: 本周主要讨论一些基本的 Kotlin 特性,如运算符重载,内联,运算符重载,懒加载,以及非常强大的 inLine,并展示了使用 Android KTX 处理内容值,捆绑包和回调时如何编写更简洁的代码
那么如何将这个对象当前状态进行一个记录,使其可以进行存储和传输呢?...Serializable是java.io包中定义的、用于实现Java类的序列化操作而提供的一个语义级别的接口 只要我们实现Serializable接口,那么这个类就可以被ObjectOutputStream...所以我们手动指定serialVersionUID后,就能在修改类之后,让系统认识序列化的过程中标示这是同一个类,从而保证最大限度来恢复数据。...writeToParcel,代表将当前对象写入到序列化结构中。...parcel.setDataPosition(i); parcel.readString(); 再往底层就是Binder的原理了,也就是将数据写到内核的共享内存中,然后其他进程可以从共享内存中进行读取
Parcelable接口 前面简介中提到过,AIDL数据类通讯需要实现Parcelable接口,为了省去接口实现的代码,Kotlin中通过kotlin-parcelize即可实现了。...在build.gradle的plugins中加入id("kotlin-parcelize") 创建TestData数据类 package vac.test.aidlservice import android.os.Parcelable...在aidl中使用了数据类TestData,所以Aidl文件和数据类的文件必须保证在同一包名下,并不是说放在同一文件夹下,实体类TestData文件在主Code文件夹下(java目录下),包名和aidl文件夹中放置....aidl文件的包名一致。...AIDL客户端 01 加入AIDL和数据类 因为客户端和服务端是两个不同的进程,所以客户端也要像服务端一样创建AIDL文件夹,复制对应的 aidl 文件和自定义的数据类,请保证包名保持一致,然后编译一下
例如,它可能是存储在 Room 数据库中的值、类的变量,加速度计的当前读数等。怎么理解这个概念呢?我觉得可以简单理解为:我们要展示给用户看的数据。...: 单一可信来源: 状态提升并不是将状态复制,而是将状态移动到上层的可组合项中,这样可确保只有一个可信来源,减少数据不一致所导致的 bug; 封装: 只有有状态可组合项可以修改其状态,可以理解为是内部“...无法用 Bundle 进行保存的数据,可以用下面的方式进行存储。 6.2 Parcelize 最简单的解决方法就是在对象上添加 @Parcelize 注解,对象就可以转化为可打包状态且可以捆绑。...还记得 Java 中的 Serializable 接口吗?是一样的作用,都是将实例对象编码成字节流进行存储。...' id 'kotlin-parcelize' // 第一步:添加此插件 } @Parcelize // 第二步:添加注解及 Parcelable 接口 data class City
code generator自动生成Parcelable序列化 Android Parcelable code generator(for kotlin)使用kotlin开发时自动生成Parcelable...2) EditText之类的可以编辑的控件,获取数据的时候,用的是id名字获取的,要手动改一下。(请看示例图上有一处报错的,那个就是。)...3) 生成的全局变量的导包是在变量类型上的,而不是在类外面导包,很不规范。...Android Parcelable code generator使用 2.Android Parcelable code generator(for kotlin) 使用kotlin开发时自动生成...【注意】默认情况下Intellij IDEA是关闭了继承了java.io.Serializable的类生成serialVersionUID的警告。
[Bundle类]的及其在intent的数据传递 [4].Android源码中[intent-filter]的解析流程 2.Intent总览 类名:Intent 父类:Object...实现的接口:[Parcelable, Cloneable] 包名:android.content' 依赖类个数:52 内部类/接口个数:3 源码行数:10086 源码行数(除注释)...`serialVersionUID`的常量 Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。...与Serializable的比较 此小点参考文章,讲得挺好 Parcelable 所属包android.os Serializable 所属包java.io |---所属包说明了Parcelable...的性能要强于Serializable 在读写数据的时候,Parcelable是在内存中直接进行读写 而Serializable是通过使用IO流的形式将数据读写入在硬盘上 Parcelable无法将数据进行持久化
通过Activity类的startActivity()执行该意图操作(接收一个Intent对象) // 将构建好的Intent对象传入该方法就可启动目标Activity startActivity...Extends Parcelable>、、 4.3 具体使用 在当前Activity把要传递的数据暂存在Intent中、在新启动的Activity中取出Intent...放入数据到Bundle bundle.putString("name", "carson"); bundle.putInt("age", 28); // d....将Bundle放入到Intent中 intent.putExtras(bundle); // e....int age = bundle.getInt("age"); 4.4 两种方式的区别 Bundle 意为 捆绑 的意思,更多适用于: 连续传递数据 若需实现连续传递:Activity
背景 最近在考虑项目重构的时候,考虑将项目拆分成两个APK,一个用于数据服务,一个用于UI展示。 数据服务APK向自己编写APK提供数据,同时也可以向第三方提供数据。...它的语法非常类似java语法。 它支持基础数据类型,比如 int,String,float等。 它支持实体类,必须是实现了Parcelable接口,支持序列化。 AIDL通过服务绑定的方式来使用。...步骤说明 服务端开发步骤如下: 1.定义一个AIDL文件 2.实现描述的接口,编写service 3.如果有实体类,需要提供实体类(jar包形式) 客户端 1.拿到AIDL文件 2.绑定服务,获得接口持有对象...我们需要在src/java文件夹编写这么一个类的实现,必须实现parcelable接口。 注意我们要先建立package,这个 package要和aidl接口声明里的一致。...android studio 自动生成根文件类。 获得实体类Entity.class 放入到项目中。
Java将数据从源(文件、内存、键盘、网络)读入到内存 中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。...- 要inputStream 或OutputStream 作为 参数,实现从字节流到字符流的转换数据流 *DataInputStream DataOutputStream -提供将基础数据类型写入到文件中...1.什么是Parcelable接口: Parcelable接口定义了将数据写入Parcel和从Parcel读出的接口。...2.应用场景: 需要在多个部件(Activity或Service)之间通过Intent传递一些数据时,简单类型的可以直接放入Intent,复杂类型的必须实现Parcelable接口。 ...将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到Parcel容器保存,以便从 Parcel容器获取数据 3、重写describeContents
code generator自动生成Parcelable序列化 2.Android Parcelable code generator(for kotlin)使用kotlin开发时自动生成Parcelable...2) EditText之类的可以编辑的控件,获取数据的时候,用的是id名字获取的,要手动改一下。(请看示例图上有一处报错的,那个就是。)...生成的全局变量的导包是在变量类型上的,而不是在类外面导包,很不规范。...Android Parcelable code generator使用 2.Android Parcelable code generator(for kotlin) 使用kotlin开发时自动生成...【注意】默认情况下Intellij IDEA是关闭了继承了java.io.Serializable的类生成serialVersionUID的警告。
Kotlin 中常用的类的修饰符有哪些? Kotlin 中可见性修饰符有哪些? Kotlin 中的内部类和 Java 中的内部类有什么不同? Kotlin 属性代理背后原理? ............Android 知识点汇总 Activity Fragment Service BroadcastReceiver ContentProvider 数据存储 View 进程 Parcelable 接口...Android 扩展知识点 ART Apk 包体优化 Hook Proguard 架构 Jetpack NDK 开发 计算机网络基础 类加载器 ............、CAS 的 区别 JVM 类加载机制、垃圾回收算法对比、Java 虚拟机结 构等 Java 的四大引用 Java 的泛型,<?...系统学习方向: 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI与FrameWork源码:高级
1 Java ①Java 13 即将于 9 月推出,并且像往常一样,IntelliJ IDEA 已经准备就绪。...10 Kotlin 捆绑的 Kotlin 插件已更新至 v1.3.41。 ①更好的 Kotlin JPA 支持包括:代码补全、错误高亮显示、用于导航的间距图标以及生成 Kotlin 实体类的能力。...⑤如果您为 Java 使用外部可空性注释,IDE 现在可以在 Kotlin 中警告您注意不正确的注释 Java 方法的用例。 要了解详情,请参阅“最新功能”页面的 Kotlin 部分。...12 Groovy ☞Groovy 3.0 语法的支持已改进 – 我们现在支持嵌套代码块,并且会在默认情况下将闭包表达式中的大括号和箭头加粗,这样便可更轻松地将代码块与闭包区分。...18 数据库工具 ☞借助全文搜索,您可以通过搜索数据源或数据源组来查找未知位置中的某些数据。 ☞您可以在搜索和导航中按数据源筛选。 有关更多详情,请参阅“最新功能”页面的数据库工具部分。
4.2 MMKV 类型 在 MMKV 的 Java 与 Objective-C 版本中,MMKV 类型是具体 CRUD 功能的实现类。...• MMKV_KMP 声明为 interface,在平台相关层编写其实现类。...Kotlin Multiplatform 工程通常的发布方式是将所有构建产物统一发布,这其中包括 Android 平台的 aar 文件,JVM 平台的 jar 文件,Kotlin/Native 的构建产物...但考虑到 Kotlin/Native 在 iOS 单平台开发中好像并不存在实际使用场景和需求,因此 MMKV-Kotlin 的文档中并没有将这几个 klib 的依赖代码列出。...七、总结与未来计划 MMKV-Kotlin 利用了 Kotlin 在各原生平台能够与“土著语言”(Java、C、Objective-C,与 Swift 的交互正在开发中)直接交互的特性,将原本支持在多个平台运行的
2.3 IPC基础概念介绍 (1)Serializable接口是Java中为对象提供标准的序列化和反序列化操作的接口,而Parcelable接口是Android提供的序列化方式的接口。...(3)Parcelable接口内部包装了可序列化的数据,可以在Binder中自由传输,Parcelable主要用在内存序列化上,可以直接序列化的有Intent、Bundle、Bitmap以及List和Map...1.AIDL支持的数据类型:基本数据类型、String和CharSequence、ArrayList、HashMap、Parcelable以及AIDL; 2.某些类即使和AIDL文件在同一个包中也要显式...AIDL相关的类和文件全部放入同一个包中,这样做的好处是,当客户端是另一个应用的时候,可以直接把整个包复制到客户端工程中。...“套接字”的概念,分为流式套接字和用户数据包套接字两种,分别对应网络的传输控制层的TCP和UDP协议。
AIDL 支持的数据类型 共 4 种: Java 的基本数据类型 List 和 Map 元素必须是 AIDL 支持的数据类型 Server 端具体的类里则必须是 ArrayList 或者 HashMap...关于 Parcelable 可以看我的这篇文章 Android 进阶6:两种序列化方式 Serializable 和 Parcelable。 注意 实体类所在的包名。...②新建 aidl 文件夹,在其中创建接口 aidl 文件以及实体类的映射 aidl 文件 在 main 文件夹下新建 aidl 文件夹,使用的包名要和 java 文件夹的包名一致: ?...parcelable Person; 在其中声明映射的实体类名称与类型 注意,这个 Person.aidl 的包名要和实体类包名一致。...方法参数中,除了基本数据类型,其他类型的参数都需要标上方向类型 in(输入), out(输出), inout(输入输出) ③Make Project ,生成 Binder 的 Java 文件 AIDL
基本数据类型、复杂数据类型(如数组、集合)、自定义数据类型等等都能支持,而且使用起来也不复杂。下面将通过几个小栗子分别介绍一下这几种方法。...还是用 Student 来煮栗子: 要想实现 Parcelable 接口,只需要先写好 Student 类和属性,然后让 Student 实现Parcelable,再然后根据 AS 的两步提示:第一步重写...3)Parcelable 不能使用在要将数据存储在磁盘上的情况,因为 Parcelable 不能很好的保证数据的持续性在外界有变化的情况下。...Bundle,因此,通过 putExtra 放入的数据,取出时也可以通过 Bundle 去取。...中,将数据放入 SharedPreferences,如下: SharedPreferences sp = getSharedPreferences("FILENAME", MODE_PRIVATE);
一般不会直接用这个类,设计它的目的就是为包内其他基本组件提供统一的基础定义。...FLAG_IS_DATA_ONLY:表明当该应用程序仅仅安装其数据,应用程序包本身并不存在设备上。...public static final int PERSIST_NEVER = 1: 不起作用,不用两个持久化页面数据或状态 public static final int PERSIST_ACROSS_REBOOTS...ServiceInfo.java源码地址 ServiceInfo类,它继承自ComponentInfo并实现了Parcelable接口,它对应manifest里面的节点的信息。...方法很少且很简单,这里就不讲解了 八、ProviderInfo类简介 ProviderInfo.java源码地址 ProviderInfo类,它继承自ComponentInfo并实现了Parcelable
领取专属 10元无门槛券
手把手带您无忧上云