在我的应用程序中,当前正在运行的活动需要来自启动该活动的活动的数据。父活动有一个对象,需要调用该方法才能获取所需的数据。
我就是这样
在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
)的重要原因-对象越复杂,泄漏的内存就越多。