Android的Parcelable中describeContents方法的作用
这个方法返回的值通常为0,那什么情况下需要填写其他值呢?
这个方法到目前为止返回其他唯一有效的值就是CONTENTS_FILE_DESCRIPTOR(0x01),指明这个Parcel的内容包含文件描述符。DropBoxManager、ParcelFileDescriptor和InputChannel等用到这个值。
那文件描述符是什么呢?获取到文件描述符能做什么呢?大家知道在类UNIX系统中,一切皆是文件,文件描述符就是操作文件的数据结构,获取到文件描述符可以完成所有文件相关的操作。
因为文件描述符的作用如此之大,为了防止leak,需要禁止在Bundle传输Parcel时包含文件描述符,所以通过Parcel中包含ParcelFileDescriptor等在Bundle中使用时会抛出IllegalArgumentException。
所以,这个值是在系统内部进行安全保护所使用的,其他情况下填0即可。