经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android SDK » 查看文章
Android Studio教程05-Parcelables和Bundles.md
来源:cnblogs  作者:Bricker666  时间:2019/1/18 9:24:58  对本文有异议

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

在活动之间发送数据

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

  1. Intent intent = new Intent(this, MyActivity.class);
  2. intent.putExtra("media_id", "a1b2c3");
  3. // ...
  4. 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的数据。

原文链接:http://www.cnblogs.com/haochen273/p/10281207.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号