实例化一个活动对象,对性能和内存有什么影响?

时间:2012-12-03 22:36:50

标签: android

假设我有一个活动MyMainActivity,让我们说复杂到一堆代码。

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

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

当我实现MyMainActivity时,就像再次创建孔活动并将所有内容从MyMainActivity存储到内存中,这样,如果我启动MyMainActivity,它需要相同的内存量,或者它只是一个链接允许从MyMainActivity编辑变量?

2 个答案:

答案 0 :(得分:3)

您无法实例化活动。框架必须照顾它。如果要使用公共方法,请将它们设置为静态,或者获取对活动对象的有效实例的引用。

编辑:

正如Squonk指出的那样,根据您的使用情况,将共享逻辑提取到另一个新类可能更好一点,至少在您知道自己在做什么之前。给“内部变量”甚至“活动”中的方法“完全访问”似乎都有效,但很可能不是正确的方法。

答案 1 :(得分:2)

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