利用Intent对象携带数据 通过查询Intent/Bundle的API文档,我们可以获知,Intent/Bundle支持传递基本类型的数据和基本类型的数组数据,以及String/CharSequence类型的数据和String/CharSequence类型的数组数据。
创新互联科技有限公司专业互联网基础服务商,为您提供棕树数据中心,高防物理服务器租用,成都IDC机房托管,成都主机托管等互联网服务。
但是Intent的传送效率也不是很高,特别是当传递一些如Bitmap的大数据,用Intent传递超过500K的Bitmap,就会造成Framework层的Java Binder挂掉,结果就是传递不成功。这点可以算成是Android的一个弊端,没有很好的解决方案。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者相互联系。你可以把从服务器中获取的数据封装到一个类中间中,然后通过Parcelable打包一下。
那么对于用户自己定义的数据结构是无法直接用Intent来传送的,如果想要通过Intent来传递自定义数据,可以让数据结构实现Parcelable接口,这样就可以把数据放入Intent。
因为Bitmap implement Parcelable,所以你可以选择直接使用intent.putExtra()传递,也可以使用Bundle。
数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream, 或者LinkList链表等等数据类型就不太好用。
你可以得到每个item的图片,然后将图片转流,然后intent将图片的字节数组传递过去,然后在第二个activity中,使用bitmapfactory的方法将流再转成bitmap,然后set进去。
如果不是本地资源文件或者adapter中没有存储id,可以把drawable转为bitmap,用intent.putExtra(bitmap, bitmap);传递过去。
感觉传二维码的字符串内容比较好,只需要通过Intent将String传递过去,再重新生成一次二维码就可以了。如果直接传递图片的话,需要从ImageView上将图片拿下来,将Bitmap对象传递过去,这样做效率也还不如直接传递String。
HashMap的初始过程 :在并发环境下使用HashMap而没有做同步,可能会引起死循环,关于这一点,sun的guan 方网站上已有阐述,这并非是bug。
在SavedStateRegistry通过唯一的key获取到一个SavedStateProvider,而SavedStateProvider其实就是返回需要保存的数据,将对应的需要缓存的数据一一返回,然后保存在系统缓存时的回调到onSaveInstanceState的方法参数Bundle中进行保存。
事实上它完全相当于一个HashMap,唯一不同的就是HashMap中的Value可以是任何对象,而SharedPreferences中的值只能存储基本数据类型(primitive types)。 对于它的使用方法,可以参考Android Developer Guide,这里不重复。
超过阙值会进行扩容操作,概括的讲就是扩容后的数组大小是原数组的2倍,将原来的元素重新hashing放入到新的散列表中去。
虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。
原始数据类型: 在Activity/Servier之间传递临时性的原始数据,可以使用Intent的putExtras方法来传递数据。若传递的数据需要长久保存,则使用SharedPreference类来完成。 传递对象。