1

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

我正在这样做

在父活动中

public static Puzzle  puzzle;  // Puzzle is a class

在儿童活动中

Puzzle puzzle = ParentActivity.puzzle;

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

它似乎工作。但我不确定这种方法的正确性。它允许在android中。将android运行时窗体破坏父活动。

4

2 回答 2

2

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

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

此外,静态数据成员表示有意的内存泄漏。该静态引用的任何内容Puzzle都不能被垃圾收集。只要Puzzle它很小,它就可以工作。这也是为什么Puzzle成为一个普通的Object,而不是更复杂的东西(例如,一个Activity)很重要的原因——对象越复杂,你泄漏的内存就越多。

于 2012-12-28T14:40:10.000 回答
1

使用谷歌,这个问题被讨论了一百万次 在活动之间共享数据的最佳方式是什么?

公共静态拼图拼图

拼图是静态的,因此即使 Parent 活动消失,它也不会在创建后被销毁。拼图会在两种情况下被销毁:你自己做,你的申请过程结束。所以使用你的方法是安全的。

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

于 2012-12-28T14:42:32.040 回答