此问题在此处已有答案:
How do I pass data between Activities in Android application?(53个答案)
4小时前关门了。
我正在制作一个纸牌游戏,我有一个活动用来弃牌,还有一个活动用来显示分数。问题是我想把一些对象(玩家和庄家的牌)传递给另一个活动,这样我就可以把分数中的imageview设置为玩家手中的牌。我该怎么做呢?我不关心安全性或任何事情,我只想用最简单的方法。
此问题在此处已有答案:
How do I pass data between Activities in Android application?(53个答案)
4小时前关门了。
我正在制作一个纸牌游戏,我有一个活动用来弃牌,还有一个活动用来显示分数。问题是我想把一些对象(玩家和庄家的牌)传递给另一个活动,这样我就可以把分数中的imageview设置为玩家手中的牌。我该怎么做呢?我不关心安全性或任何事情,我只想用最简单的方法。
5条答案
按热度按时间sdnqo3pr1#
在Intent中使用bundle并不是因为安全问题,而是因为Android的开发人员将其简单明了。在我看来,使用bundle和Intent来传递更大的对象并不是一个好主意。它的实现太复杂了,会让你把对象分解为原语(使用parcelable时),并在内存的另一端制作副本(取一个对象,在Intent中设置所有内容,然后在另一侧重新创建它,从而创建一个新副本),这对于内存占用量较大的对象来说并不好。
我建议:
1.使用单一存储
1.使用应用程序类(其行为也类似于单例)
我经常使用一个singleton,它有一个hashMap,我在其中生成了一个整数键(从原子Integer中),并在Map中放置了一个对象。您只需将ID作为一个额外项发送到Intent中,然后在另一端通过从Intent中获取键来检索它,并访问您的singleton来检索和删除对象(从该Map中),并在您的新Activity/服务中使用它。
下面是一个类似这样的例子:
(Note:这是我的restrequests库(https://github.com/darko1002001/android-rest-client)的一部分,如果你想了解更多关于如何实现所有内容的细节)。在你的例子中,你需要剥离一些代码并用你自己的代码替换,但是总体思路是相同的。
ao218c7q2#
您可以使用Bundle在其他Activity中共享变量。如果您想在其他Activity中传递您自己的类对象,请使用
Parcelable
给您的类这里有一个例子
将
Person
对象插入包中正在获取
Person
对象goqiplq23#
您可以使用捆绑包或共享首选项来共享变量或保存变量以供将来使用。
您可以找到的共享首选项示例here您可以找到的捆绑包示例here
t9eec4r04#
Singleton将是最好的方法
dy1byipe5#
您可以使用意图附加项,
用于Intents的docs提供了更多信息(请查看标题为“Extras”的部分)。