很多时候我一直在开发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>类(或对象)。
答案 0 :(得分:4)
我的问题是:
1)这是我的问题定义的最佳方法吗?
不,这不是解决这个问题的最好方法。
2)如果不是,有更好的方法吗?
是保存静态信息,你应该使用像无头片段这样的东西,以便android框架可以处理未使用的类和数据上的垃圾收集
3)如果不是,这种技术的缺点是什么?
缺点很多:)首先内存泄漏导致静态变量完全被垃圾收集,因此它会留在内存中。 其次你不应该使用其他地方的主要活动的编辑文本,因为没有保证主要活动仍将存在,因为如果你离开它,android可能会杀死它以节省内存。 所有屏幕都应该是自包含的,数据必须用意图和Bundles()
进行转移3)可以将相同的技术扩展到Mainctivity中的功能吗?
创建单独的辅助类,它们位于静态类(如帮助程序)中。 MainActivity不是静态类,不应该是静态类