需要在Activity间传递大量的数据,能有哪些方法?

在Activity间传递的数据一般比较简单,可是有时分实践开发中也会传一些比较复杂的数据,尤其是面试问道当遇到需求在Activity间传递很多的数据怎么办?

Intent 传递数据的巨细是有约束的,它大约能传的数据是1M-8K,原因是Binder锁映射的内存巨细便是1M-8K.一般activity间传递数据会要运用到binder,因此这个就成为了数据传递的巨细的约束。那么当activity间要传递大数据选用什么方法呢?其实方法很多,咱们就举几个比方给咱们说明一下:

  • 使用Intent传递数据: Intent是在Android中用于在组件之间传递数据的机制。你可以将数据放入Intent的extras中,然后在目标Activity中从Intent中获取这些数据。
  • 使用Parcelable或Serializable: 如果需要在Intent中传递自定义对象,你可以让这些对象实现Parcelable接口或Serializable接口,以便将它们序列化为字节流并传递给其他Activity。
  • 使用全局单例: 你可以创建一个单例类来存储需要在多个Activity之间共享的数据。
  • 使用数据库: 如果数据量较大且需要长时间存储,可以考虑使用SQLite数据库或其他持久化解决方案。
  • 使用ViewModel和LiveData: Android架构组件中的ViewModel和LiveData可以帮助在Activity之间共享数据,并且可以在屏幕旋转等情况下保持数据的一致性。
  • 使用文件存储: 如果数据量非常大,可以将数据写入文件,然后在另一个Activity中读取。
  • 使用网络请求: 如果数据可以从服务器获取,可以考虑使用网络请求在Activity之间共享数据。
  • 使用依赖注入: 通过依赖注入框架,你可以在多个Activity之间注入共享的数据实例,从而避免数据冗余和一致性问题。

本篇主要内容讲一下第一种使用Intent传递数据。

使用Intent传递数据

什么是intent?

intent就是起到一个中间媒介的作用,可以在activity之间传递数据,也可以进行进行一些基本的action。比如startactivity()之类。

利用intent在两个activity之间传递数据

首先我们创建两个activity,分别叫MainActivity以及OtherActivity。在MainActivity的布局文件中,添加一个button,用于页面之间的转跳,以及相关数据的传输。在OtherActivity的布局文件中,我们添加一个TextView,用于接受数据。

MainActivity中的代码:

需要在Activity间传递大量的数据,能有哪些方法?_第1张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

这些代码,相信大家都很熟悉,应该不难。我们主要来说说putExtra();

putExtra(“A”,B)中,AB为键值对,第一个参数为键名,第二个参数为键对应的值。顺便提一下,如果想取出Intent对象中的这些值,需要在你的另一个Activity中用getXXXXXExtra方法,注意需要使用对应类型的方法,参数为键名

贴出OtherActivity的代码:

需要在Activity间传递大量的数据,能有哪些方法?_第2张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

因为我们之前传入的是一个字符串,所以调用getStringExtra这个方法。

这样我们就简单的在两个activity之间传递数据啦~

利用intent在两个activity之间传递数据包

传递数据包,我们主要使用bundle这个类。

首先看MainActivity中的代码:

需要在Activity间传递大量的数据,能有哪些方法?_第3张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

首先我们创建一个bundle类。当传递字符串时,使用putString方法;传递整数时,用putInt方法。 最后再用putExtras 将数据包传递到另一个activiity。

OtherActivity中的代码:

需要在Activity间传递大量的数据,能有哪些方法?_第4张图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

首先我们创建一个bundle对象,接收MainActivity传递过来的数据。最后用setText方法,将其展现出来。这样一个数据包就传递完成了。

利用intent获取到返回数据

我们继续创建两个Activity,分别叫MainActivity和OtherActivity。但是这次不同的是,我们在MainActivity的xml文件中,创建一个按钮和一个TextView,用于接收返回的数据。在OtherActivity的xml的文件中,我们创建一个EditText和一个button,用于返回数据。 (这两个Xml文件的代码,我也不不一一展示了)

OtherActivity的代码:

需要在Activity间传递大量的数据,能有哪些方法?_第5张图片

都比较基础,我们主要看setResult()这个方法。

它的第一个参数是一个返回码,主要用于设置返回状态,你也可以自行进行定义。第二个参数是一个intent对象。

MainActivity的代码:

需要在Activity间传递大量的数据,能有哪些方法?_第6张图片

关于Android开发中需要在Activity间传递大量的数据,怎么去解决?其实有很多方法,上方也举例了一个实际案例。更多有关Android开发技术可以参考[《Android核心技术手册》]学习更多Android进阶技巧。

需要在Activity间传递大量的数据,能有哪些方法?_第7张图片

你可能感兴趣的:(android开发,android,Android开发,程序员,移动开发,activity)