Parcelable并且Bundle对象旨在用于跨IPC / Binder事务等进程边界,活动与意图之间以及跨配置更改存储瞬态。本页面提供使用ParcelableBundle对象的建议和最佳实践 。

在活动之间发送数据

当应用程序创建一个Intent用于startActivity(android.content.Intent)启动新Activity 的对象时 ,应用程序可以使用该putExtra(java.lang.String, java.lang.String) 方法传入参数。

Intent intent = new Intent(this, MyActivity.class);
intent.putExtra("media_id", "a1b2c3");
// ...
startActivity(intent);

OS Bundle包含意图的基础。然后,操作系统创建新的活动,取消数据包裹,并将意图传递给新活动

  • 我们建议您使用Bundle该类在Intent对象上设置操作系统已知的基元。Bundle类可以有效处理编组和解组
  • 有时候,我们需要在activity之间发送复杂的数据或者对象时
    • 建议实现Parcelable接口 + 提供writeToParcel(android.os.Parcel, int)方法
    • 提供一个CREATOR参数来实现Parcelable.Creator接口,该接口的 createFromParcel() 方法用于将Parcel后退转换为当前对象
  • 通过Intent传数据是,建议只传1-10kb

进程之间发送数据

  • 在进程之间发送数据与在活动之间执行数据类似。
  • 但是,在进程之间发送时,我们建议您不要使用自定义的可分区。如果您将自定义 Parcelable对象从一个应用程序发送到另一个应用程序,则需要确保发送应用程序和接收应用程序都具有完全相同的自定义类别版本。通常这可能是跨两个应用程序使用的通用库。如果您的应用程序尝试向系统发送自定义parcelable,则会发生错误,因为系统无法解组它不知道的类。
  • Binder事务缓冲区具有有限的固定大小,当前为1MB,由进程中的所有事务共享。由于此限制处于流程级别而非每个活动级别,因此这些事务包括应用程序中的所有绑定事务,例如onSaveInstanceState,startActivity和与系统的任何交互。当超过大小限制时,将引发TransactionTooLargeException
  • 对于savedInstanceState的具体情况,数据量应该保持很小,因为只要用户可以导航回该活动(即使活动的进程被终止),系统进程也需要保留提供的数据。我们建议您将保存状态保持为小于50k的数据。

Android Studio教程05-Parcelables和Bundles.md的更多相关文章

  1. Android studio教程

    Android studio教程: http://jingyan.baidu.com/season/44062

  2. Android Studio教程从入门到精通

    最新2.0系列文章参考: Android Studio2.0 教程从入门到精通Windows版 - 安装篇Android Studio2.0 教程从入门到精通Windows版 - 入门篇Android ...

  3. Ubuntu1404配置jdk-12.0.2并安装Android Studio教程

    最近在学习Android Studio 移动应用程序开发,但Android Studio好像对win10不太友好,所以小帅想在Ubuntu上安装Android Studio.为此小帅还去网上找了相关教 ...

  4. Android Studio 教程

    Android Studio 超详细安装教程 http://dkylin.com/archives/2019/android-studio-installation.html Android Stud ...

  5. Android Studio教程--给Android Studio安装Genymotion插件

    打开Android Studio,依次[File]-[Settings] 在打开的settings界面里找到plugins设置项,点击右侧的“Browser..”按钮 在搜索栏里输入genymotio ...

  6. Android Studio教程--Android Studio 2.1安装与配置

    1.下载Android Studio 去官网https://developer.android.com/studio/index.html下载最新版的Android Studio2.1(自备梯子) 或 ...

  7. Mac下载安装Android Studio教程

    今天把公司闲置的一台Mac-mini重装了下系统感觉用着速度还不错,平时上班用的机器USB有些问题,所以打算用这台Mac.以往开发用Intellij Idea就够用,但是这次项目引用的jar包太多,遭 ...

  8. Android studio教程:[6]创建多个Activity

    通常来说,一个android应用程序不止一个Activity(活动),更不止一个界面.于是需要创建多个Activity来满足应用程序的要求,这里我将告诉大家如何添加新的Activity,并实现Acti ...

  9. Android studio教程:[5]活动的生命周期

    想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命 ...

  10. Android studio教程:[4]真机测试

    有了Android studio这么好用的软件,自然要有一部不错的安卓手机,然后在真机上测试自己的程序,那样才能更好的发现程序中存在的问题,毕竟模拟器不是真正的手机嘛. 工具/原料 Android s ...

随机推荐

  1. 自定义GridLookUpEdit编辑器

    本文版权归博主  惊梦无痕  所有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作.SourceLink 前两天分享了GridControl的自定义编辑器,今天再来分享一下整理出来的GridLo ...

  2. 如何通过get,set方法访问到父类的私有属性

    刚学习继承的时候,总是会有这样的疑问. 子类继承父类时,会继承所有的非私有的属性和方法.那么在用set方法修改父类的私有属性时,怎么没有报空指针异常呢? 后来仔细想过这个问题,既然没有报空指针,那么在 ...

  3. pfSense配置基于时间的防火墙规则

    基于时间的规则允许防火墙规则在指定的日期和/或时间范围内激活.基于时间的规则与任何其他规则的功能相同,只是它们在预定时间之外的规则集中实际上不存在. 基于时间的规则逻辑处理基于时间的规则时,调度计划确 ...

  4. Cookie、LocalStorage 与 SessionStorage的区别在哪里?

    基本概念 Cookie Cookie 是小甜饼的意思.顾名思义,cookie 确实非常小,它的大小限制为4KB左右.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通 ...

  5. 一张图看懂 SQL 的各种 join 用法

    下图展示了 LEFT JOIN.RIGHT JOIN.INNER JOIN.OUTER JOIN 相关的 7 种用法.   具体分解如下: 1.INNER JOIN(内连接)     2.LEFT J ...

  6. 三、 redis进阶篇

    1. redis事务 使用方法:方法为先发送multi命令告诉redis,下面所有的命令属于同一个事务,先不要执行,而是把他们暂时存起来,redis返回OK,然后后面执行需要放在同一个事务里的命令,可 ...

  7. 关于windows系统无法更新的解决方法

    操作系统无法更新解决方案! 1.检查网络连接是否正常: 2.检查控制面板设置,windows更新是否开启: 3.检查计算机-管理-服务和应用程序-服务组件里的windows update是否开启: 4 ...

  8. 关于wordpress升级遇到的问题

    前几天登录我的博客后台,发现可以升级了,顺手点了一下,但顺接出现了几个报错,然后这里记录一下解决方法: 1.出现“另一更新正在进行”的错误解决: 这是因为可能你上次更新失败了,或者WordPress在 ...

  9. jquery操作iframe的方法:父页面和子页面相互操作的方法

    今天在弄jquery操作iframe中元素:先由iframe中的子页面b.html给外面的父页面a.html页面传值,再将a.html页面计算机的值放到b.html页面上,这里就用到子页面和父页面相互 ...

  10. 怎么隐藏 iOS Safari 打开网页时的地址栏和工具栏探索

    先来看一张截图 红色框处就是用手机浏览器打开页面时,自动显示出来的头部地址栏和底部工具栏 如果现在有一个需求,用手机浏览器打开页面时,把地址栏和工具栏隐藏,该怎么办呢? 起初我在度娘找到了好几篇博客都 ...