我需要在活动之间传递我的对象列表。我不想每次都使用parcelable或序列化数据。我也不想将它保存在本地文件或数据库中。这可能使我使用静态对象。在活动之间传递/使用非原始对象
可以说我在活动Activity1到Activity2之间使用ListA。方法1:在其中一个活动中创建一个静态ListA,并完成所有静态ListA的工作。
方法2:在另一个类中创建一个静态列表,我只用它来存储这个列表并在列表中完成所有的东西。但是这意味着只要我的进程正在运行,它就会一直存在,而当我不需要它时,我必须手动将其设置为空。
方法3。我正在扩展上面的类来使用静态HashMap来实现它。 我有两种方法之一,使用唯一键将静态HashMap中的列表存储起来,另一种方法是检索列表并在每次检索数据时将其删除,以便List不再出现在静态HashMap中。所以我们必须只传递生成的随机密钥来存储活动之间的数据,我可以使用Intents作为额外的数据传递。
当我使用上述任何一种方法时,会有什么问题,哪种方法最好。
+1为你的第一段“Uggg statics!...”无论如何可以说我想现在坚持静力学,你能否评论我的做法3。我从地图中移除静态对象,不应该再出现。而且我确实考虑过你提到关于android释放内存的情况。我处理该问题,并简单地关闭我的活动,用户可以再次请求数据。谢谢。 – achie
顺便说一句,这个解决方案有一个catch ..你不仅要扩展活动,你还必须扩展你使用的其他基本活动,如“ListActivity”,“PreferenceActivity”等,并有这个逻辑复制在那里... – havexz
@ havexz没有赶上。无论你是子类Activity还是Activity的其他子类,这都会起作用。这里的想法是,你不会在所有活动中共享设置/获取代码,因为每个活动传递的内容可能有所不同,因此共享不会对你有多大好处。我想你正在考虑一些其他问题。 Acitivity.getApplication()方法可用于Activity的所有子类。 – chubbsondubs