调用另一个android活动中包含的对象的方法

时间:2012-12-28 14:14:50

标签: android android-activity

在我的应用中,当前正在运行的活动需要来自已启动它的活动的数据。父活动有一个对象,需要调用该方法来获取所需的数据。

我这样做

在ParentActivity中

public static Puzzle  puzzle;  // Puzzle is a class

在儿童活动中

Puzzle puzzle = ParentActivity.puzzle;

ArrayList<String> cells = puzzle.getItemList();

似乎有效。但我不确定这种方法的正确性。它允许在android中。 android运行时表单是否会破坏父活动。

2 个答案:

答案 0 :(得分:2)

如果Puzzle是表示数据模型的普通对象,那么只要您认为这只是一个缓存并且Puzzle及其内容相当小,那么您所拥有的就是“正确”。

您的流程可以在离开前台后随时终止。此时,缓存的Puzzle消失了。任何需要生存的数据都需要持久存储:文件,数据库,SharedPreferences,“云”等等。您的静态Puzzle可以是该持久性数据的缓存,但真实数据模型是持久性存储,而不是缓存的Puzzle

此外,静态数据成员表示故意内存泄漏。静态Puzzle引用的任何内容都不能被垃圾回收。只要Puzzle很小,那就有效。这也是Puzzle成为普通Object而不是更复杂(例如,Activity)的重要原因 - 对象越复杂,泄漏的内存就越多

答案 1 :(得分:1)

使用谷歌,这个问题被讨论了一百万次 What's the best way to share data between activities?

  

公共静态益智拼图

拼图是静态的,因此即使父活动消失,它也不会在创建后被销毁。谜题将被破坏2例:你自己做,你的申请过程就完成了。所以使用你的approche是安全的。

但我建议你谷歌“在活动之间共享数据”并找到更好的方法(例如在应用程序类中单线)。