在MainActivity中将变量声明为静态并从其他类访问它们

时间:2014-01-15 10:18:16

标签: java android

很多时候我一直在开发Android应用程序,以便访问一些重要的变量,例如 getApplicationContext()或其他变量,例如 Buttons Edittexts ,通常在MainActivity 之外无法访问,但在相同项目中的某些其他类中需要,我一直在使用此技术,那是

在MainActivity中 (对于getApplicationContext()案例)

private static Context context = null;

并在 onCreate 方法内,我这样做:

context = getApplicationContext();

然后我使用:

访问上下文(例如显示toast消息)
Toast.makeText(MainActivity.context,"Message",Toast.LENGTH_LONG).show();

在我的另一堂课。与获取设置 EditText 变量中的文字类似,等等。

我的问题是:

1)这是我的问题定义的最佳方法吗?

2)如果不是,有更好的方法吗?

3)如果不是,这种技术的缺点是什么?

3)可以将相同的技术扩展到Mainctivity中的功能吗?

编辑:我需要其他活动,而我只是应用的任务拆分为单独< / em>类(或对象)。

1 个答案:

答案 0 :(得分:4)

我的问题是:

1)这是我的问题定义的最佳方法吗?

不,这不是解决这个问题的最好方法。

2)如果不是,有更好的方法吗?

是保存静态信息,你应该使用像无头片段这样的东西,以便android框架可以处理未使用的类和数据上的垃圾收集

3)如果不是,这种技术的缺点是什么?

缺点很多:)首先内存泄漏导致静态变量完全被垃圾收集,因此它会留在内存中。  其次你不应该使用其他地方的主要活动的编辑文本,因为没有保证主要活动仍将存在,因为如果你离开它,android可能会杀死它以节省内存。  所有屏幕都应该是自包含的,数据必须用意图和Bundles()

进行转移

3)可以将相同的技术扩展到Mainctivity中的功能吗?

创建单独的辅助类,它们位于静态类(如帮助程序)中。 MainActivity不是静态类,不应该是静态类