如FileReader。 处理流是在对节点流封装的基础上的一种流,通过封装后来实现数据的读写功能,也叫高级流。 ...,而是内存中的一个数组) 字符串 StringReader StringWriter 对字符串进行处理的节点流 管 道 PipedInputStream PipedOutputStream PipedReader...我们有时会需要将内存中的整个对象都写入到文件中去,然后在适当的时候再从文件中将对象还原至内存。...附录2: Android中实现序列化有两种选择:一是实现Serializable接口,二是实现Parcelable接口(android特有的功能,效率比实现Serializable接口高效,可用于...2.应用场景: 需要在多个部件(Activity或Service)之间通过Intent传递一些数据时,简单类型的可以直接放入Intent,复杂类型的必须实现Parcelable接口。
ArrayList,这个是必须要的 ArrayList bundlelist = new ArrayList(); bundlelist.add(list); bundle.putParcelableArrayList...:将对象转换为Json字符串或者通过Serializable,Parcelable序列化 不建议使用Android内置的抠脚Json解析器,可使用fastjson或者Gson第三方库!...也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面, 在通过createFromParcel从流里读取对象,只不过这个过程需要你来实现,因此写的 顺序和读的顺序必须一致。...另外:Android中大量用到Parcelable对象,实现Parcable接口又是非常繁琐的,可以用到 第三方的开源框架:Parceler 可参考Android的Parcelable自动生成 两种序列化方式的比较...注意事项 Application对象是存在于内存中的,也就有它可能会被系统杀死,比如这样的场景: 我们在Activity1中往application中存储了用户账号,然后在Activity2中获取到用户账号
Serializable对象、Parcelable及其对应数组、CharSequence 类型 d. ArrayList,泛型参数类型为:、、、 4.3 具体使用 在当前Activity把要传递的数据暂存在Intent中、在新启动的Activity中取出Intent...中的数据 方法1:putExtra() // 目的:将FristActivity中的一个字符串传递到SecondActivity中,并在SecondActivity中将Intent对象中的数据(FristActivity...将Bundle放入到Intent中 intent.putExtras(bundle); // e....总结 本文对Android中的Intent组件进行了全面的介绍
Serializable对象、Parcelable及其对应数组、CharSequence 类型 d. ArrayList,泛型参数类型为:、、、 4.3 具体使用 在当前Activity把要传递的数据暂存在Intent中、在新启动的Activity中取出Intent...中的数据 方法1:putExtra() // 目的:将FristActivity中的一个字符串传递到SecondActivity中,并在SecondActivity中将Intent对象中的数据(FristActivity...将Bundle放入到Intent中 intent.putExtras(bundle); // e....总结 本文对Android中的Intent组件进行了全面的介绍 接下来我将继续介绍 Android开发中的相关知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记 请帮顶 / 评论点赞!
Serializable对象、Parcelable及其对应数组、CharSequence 类型 d. ArrayList,泛型参数类型为:、、、 4.3 具体使用 在当前Activity把要传递的数据暂存在Intent中、在新启动的Activity中取出Intent...中的数据 方法1:putExtra() // 目的:将FristActivity中的一个字符串传递到SecondActivity中,并在SecondActivity中将Intent对象中的数据(FristActivity...将Bundle放入到Intent中 intent.putExtras(bundle); // e....总结 本文对Android中的Intent组件进行了全面的介绍 Carson带你学Android 文章系列: Carson带你学Android:页面活动-Activity Carson带你学Android
、复杂数据类型传递 Java 中也定义了一些常用的复杂类型,比如 String、基本数据类型的数组、ArrayList、HashMap 等等,Intent 也对它们做了支持,使得我们能很容易的通过 Intent...1.3.2、实现 Parcelable 接口 上面介绍了 Serializable 接口,但 Serializable 是 Java 的实现,Android 下能正常使用,没毛病,但 Google 觉得...Serializable 在 Android 内存不大性能不强的情况下的效率不太够,于是为 Android 量身定制了一个专用的接口——Parcelable。...中,将数据放入 SharedPreferences,如下: SharedPreferences sp = getSharedPreferences("FILENAME", MODE_PRIVATE);...前面说了,这玩意是 SDK 不可见的,而且它维护的是系统的属性值,系统属性值 APP 可以读,但不能轻易修改。
在日常的应用开发中,我们可能需要让某些对象离开内存空间,存储到物理磁盘,以便长期保存,同时也能减少对内存的压力,而在需要时再将其从磁盘读取到内存,比如将某个特定的对象保存到文件中,隔一段时间后再把它读取到内存中使用...,那么该对象就需要实现序列化操作,在java中可以使用Serializable接口实现对象的序列化,而在android中既可以使用Serializable接口实现对象序列化也可以使用Parcelable...其实通过Intent传递复杂类型(如自定义引用类型数据)的数据时就需要使用Parcelable对象,如下是日常应用中Intent关于Parcelable对象的一些操作方法,引用类型必须实现Parcelable...而Android的Parcelable的设计初衷是由于Serializable效率过低,消耗大,而android中数据传递主要是在内存环境中(内存属于android中的稀有资源),因此Parcelable...所以Android应用程序在内存间数据传输时推荐使用Parcelable,如activity间传输数据和AIDL数据传递。
'; const package_NdefFormatable = 'android.nfc.tech.NdefFormatable'; const package_Parcelable = 'android.os.Parcelable...'], ['android.nfc.tech.MifareClassi'], ['android.nfc.tech.MifareUltralight'] ]; // 要写入的数据 let...nfcAdapter.isEnabled()) { uni.showToast({ title: '请在系统设置中先启用NFC功能!'...= plus.android.importClass("android.os.Parcelable"); let rawmsgs = intent.getParcelableArrayExtra...nav-bar> <textarea class="txtarea" disabled :value="$store.getters.nfcreadtxt" placeholder="这是读<em>取到</em><em>的</em>
Android Parcelable接口使用方法详解 1....3.实现序列化的方法 Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是android特有功能,效率比实现Serializable...5.应用场景 需要在多个部件(Activity或Service)之间通过Intent传递一些数据,简单类型(如:数字、字符串)的可以直接放入Intent。...步骤 1)implements Parcelable 2)重写writeToParcel方法,将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到...也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。
Parcel是Android进程间通信中, 高效的专用序列化机制。...因此,在Bundle中写成一个Parcel,与再次读这期间一定发生了类型转换。...这里我们可以看到,readValue()方法中,首先读取一个int的数据,这个int数据是在writeValue()中将TreeMap设成的VAL_MAP的常量,然后去匹配后面的分支,调用readHashMap...这确实是一个极端例子,因为在一个Intent中传一个Map是比较少见的,你也只有很小的理由来传Serializable而不是Parcelable的。...不过,要记得的是,这种用构造器的方式,map中的附加属性将会丢失,只有键值对被保存了下来。 总结: 在Android开发中,你可能会被一些表面的事所欺骗,特别是一些小的,似乎是无关紧要的事。
Android 中除了传统的 Java 序列化机制,还有一个特殊的序列化方法,即 Parcel。...之前,会先获取 Parcelable 实际的类名,并以字符串的方式写入。...数据是 4 字节对齐的(如 key33);如果本身已经对齐,也会在后面进行特殊拓展,如(key1/key2);特殊拓展的值为 Parcel::writeInplace 中的 padMask,对于已经...这也是为什么 LazyValue 需要在序列化数据中写入其数据长度的原因,因为对于这类数据(如 Parcelable),无法仅通过类型得知其数据长度。...,即将释放的 Parcel 放入 sOwnPool/sHolderPool 链表的头部。
AIDL文件中的定向tag:in、out、inout的区别。 如何在AIDL中添加权限校验。 一、AIDL是什么?...1、新建一个承载AIDL文件的lib(在本示例中姑且叫做libaidl) 创建一个Android Library类型的Module,为了与普通的java代码作区分,在main文件夹下为AIDL文件新建一个专门的文件夹...然后添加AIDL接口文件: 首先新建一个Contact类,通过上面的介绍我们知道,普通的java类是不能在AIDL中使用的,必须要实现Parcelable接口,并在AIDL文件中声明: Contact.java...3、客户端实现(在ipcclient工程中) 在客户中绑定服务端的Service,绑定成功后就可以在ServiceConnection中的onServiceConnected方法中将返回的Binder对象转换成...接着在客户端: 在客户中绑定服务端的Service,绑定成功后就可以在ServiceConnection中的onServiceConnected方法中将返回的Binder对象转换成AIDL接口所属的类型
, 使用 路由组件 进行界面跳转时 , 涉及到参数的传递 , 传递过去的参数需要在目的地 Activity 的 onCreate 方法中 , 调用 getIntent().getXxxExtra() 获取到传递的值...; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;...类型 TypeMirror parcelableType = mElementUtils.getTypeElement("android.os.Parcelable").asType(...类型 TypeMirror parcelableType = mElementUtils.getTypeElement("android.os.Parcelable").asType(...rawType.toString().equals("java.util.ArrayList") && !
坑 先来看看 Android Studio 给的自动实现。...<Int ) : Parcelable 使用 Android Studio 自带的 Add Parcelable Implementation ,然后你就得到了。。。...很明显的,自动生成的 Parcelable 实现没有包含对 MutableList 的处理,因为 Parcel 原生只支持 ArrayList ,所以这是需要你自己实现的部分。先来解决这个问题。...因此我们只需要在对应的地方调用 Parcel 中对 List 和 ArrayList 的处理方法就可以了。...Parcelable 要求每个实现类都有这个 CREATOR 对象,并且它必须是非空的、公有的、静态字段。在 Java 程序中,对于每个类 CREATOR 有非常稳定的实现。
Intent数据传递 List 传递List传递List的方法 ArrayList info = new ArrayList(); info.add(name);...方式 用Parcelable方式传递Object的语法:bundle.putParcelable(key,object); 用Parcelable方式接收Object的语法:object=(Object...3)静态的Parcelable.Creator接口,本接口有两个方法:createFromParcel(Parcel in) 实现从in中创建出类的实例的功能。...和onActivityResult()使用注意点 首先描述下bug::Activity A启动Activity B,然后在Activity B中取到一个值,并通过back键返回到Activity A,但是在...2.startActivityForResult(intent, -1)函数,第二个参数小于0,应该要大于0 3.启动模式为Android:launchMode=”singleTask”和android
在Android开发中,Serializable与Parcelable是两种用于实现对象序列化的常见方式。在面试中,对于这两种技术的理解和应用能力常常被用来评估一个Android开发者的水平。...理解与运用 问题: 解释Serializable和Parcelable的区别,以及它们在Android中的应用场景。...在Android中,推荐使用Parcelable来传递复杂对象,特别是在需要频繁传递对象时,Parcelable的性能更佳。...在Android开发中,性能往往是至关重要的,尤其是在需要频繁传递大量数据对象的场景下,如Activity之间传递数据、Fragment之间传递数据等。...此外,Parcelable相比Serializable在代码实现上更为复杂,但是可以通过代码生成工具来简化实现过程,如Android Studio提供的Parcelable插件。
另外,ContentValues实现了Parcelable接口,也是为了提高手机上的处理效率。...这里提到ContentValues,还是因为Android源码在操作SQLite时只认这个数据结构,而不认别的java容器类,所以我们得额外对它加以了解了。...幸好ContentValues的用法很简单,主要就是保存操作put,以及读取操作get。put和get方法都支持常用的基本数据类型,如整型、浮点数、字符串、布尔类型、字节等等。...SQLite在插入、更新、查询操作中需要用到ContentValues数据,下面是插入和更新的代码例子: private static final String TABLE_NAME = "person...游标操作的工程代码 点此查看Android开发笔记的完整目录
与App现场恢复机制(主要讲述AMS如何为App恢复现场的原理) 原理篇2:后台杀死与LowmemoryKiller(主要讲述App被后台杀死的原理) 本篇是Android后台杀死系列的第一篇,主要讲解在开发过程中...(Fragment.java:102) at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java...onSaveInstanceState主要用于获取View需要保存的State,并将自身的ID作为Key,存储到SparseArray states列表中,其实就PhoneWindow...从源码很容易看出,其实就是取出SavedState,并获取到异常杀死的时候的位置,以便后续的恢复, ViewPager.java @Override public void onRestoreInstanceState...设置当前位置,代码如下: FragmentTabHost.java @Override protected Parcelable onSaveInstanceState() { Parcelable
领取专属 10元无门槛券
手把手带您无忧上云