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

我就是这样

在ParentActivity中

public static Puzzle  puzzle;  // Puzzle is a class


在儿童活动中

Puzzle puzzle = ParentActivity.puzzle;

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


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

最佳答案

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

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

同样,静态数据成员代表故意的内存泄漏。静态Puzzle引用的任何内容都不能被垃圾回收。只要Puzzle很小,它就起作用。这也是为什么Puzzle成为普通Object而不是更复杂的东西(例如Activity)的重要原因-对象越复杂,泄漏的内存就越多。

07-26 01:13