如何在Intent中发送Multipart.Part

4

我有一个在activity中的okhttp3.MultipartBody.Part,需要通过Intent put extra发送到下一个activity。

它给我一个错误

Parcel: unable to marshal value okhttp3.MultipartBody$Part

作为一种解决方法,我在util文件中添加了一个静态变量,并在下一个activity中访问它。

是否有可能将其通过intent发送?
是否因为数据太大而停止运行?

1个回答

1

有没有可能通过意图(Intent)发送它?

不,抱歉。

是因为数据太大而停止了吗?

不是。它停止的原因是数据类型错误。Intent附加的内容无法保存任意对象。

也有可能如果其中包含的内容过多,会因大小而导致应用程序崩溃,但您甚至还没有到达那一步。

作为解决方法,我已经在util文件中添加了一个静态变量,并在下一个活动中访问它。

在现代Android应用程序中,理想情况下,任何一个活动都不应该有任何OkHttp对象。使用存储库处理与服务器的通信,活动或者更好的方式是ViewModels可以与存储库进行交互。请参见https://developer.android.com/jetpack/docs/guide获得更多信息。


哇,我收到了@CommonsWare的回复。这对我来说是一个成就 :) #非常尊重 - Prabs
好的。我正在尝试在Retrofit API调用中发送音频、文件和图像。为此,我使用了一个包含这3个文件的ArrayList<Multipart.Part>。这是要求。 - Prabs
1
@Prabs:没问题。但是理想情况下,Retrofit调用不应该由任何一个活动直接进行。其他东西会处理它(存储库)。这样的存储库通常是单例的(无论是手动创建还是由依赖反转框架(如Dagger或Koin)管理),因此两个活动都可以与其通信。然后,您不需要在活动之间传递OkHttp对象。把它想象成超级充电版的静态变量方法就好了。 :-) 另外,感谢您的好评! - CommonsWare
1
@Prabs:这个Java应用程序模块它的Kotlin对应模块展示了这种技术。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接