在我的应用中,当前正在运行的活动需要来自已启动它的活动的数据。父活动有一个对象,需要调用该方法来获取所需的数据。
我这样做
public static Puzzle puzzle; // Puzzle is a class
Puzzle puzzle = ParentActivity.puzzle;
ArrayList<String> cells = puzzle.getItemList();
似乎有效。但我不确定这种方法的正确性。它允许在android中。 android运行时表单是否会破坏父活动。
答案 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是安全的。
但我建议你谷歌“在活动之间共享数据”并找到更好的方法(例如在应用程序类中单线)。