0

假设我有一个活动 MyMainActivity,假设有一堆代码足够复杂。

从另一个活动中,访问公共变量或我实例化的方法:

MyMainActivity ma = new MyMainActivity();
ma.editVariableMethod();
String example_variable = ma.public_examplevariable;

当我实例化 MyMainActivity ma 时,是否就像再次创建孔活动并将所有从 MyMainActivity 存储到内存一样,如果我启动 MyMainActivity,它会占用相同数量的内存,或者它只是一个允许的链接从 MyMainActivity 编辑变量?

4

2 回答 2

3

你不能实例化一个活动。框架必须照顾它。如果您想使用公共方法,要么将它们设为静态,要么获取对活动对象的有效实例的引用。

编辑:

正如 Squonk 指出的那样,根据您的用例,将共享逻辑提取到另一个新类可能是一个更好的主意,至少在您知道自己在做什么之前。对 Activity 中的内部变量甚至方法进行“完全访问”似乎可行,但这很可能不是正确的方法。

于 2012-12-03T22:42:07.563 回答
2

在 Android 中的对象之间共享内存驻留对象是一种不好的做法,无论对象是什么。Android 无法确保它能够正常工作。大多数用例都有可用的替代方案。在另一个 Activity 中“访问公共变量”的特殊情况下,您可以调用 startActivityForResult(),或确保您的 Activity 将他们想要“共享”的数据存储在 SharedPreferences 等中。如果您有两个或多个使用同样的方法,你应该首先考虑是否需要将类抽象成一个单独的对象。理想情况下,活动应该是委托给 POJO 的框架。

于 2012-12-03T23:22:41.663 回答