【发布时间】:2022-01-09 08:36:08
【问题描述】:
我的应用程序类中有这段代码:
public class MyApp extends MultiDexApplication {
private static Application context;
@Override
public void onCreate(){
super.onCreate();
context = this;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
}
public static Context getAppContext() {
return context.getApplicationContext();
}
}
当我想访问上下文时,我使用以下代码:
Context context = MyApp.getAppContext();
我多次阅读过以静态方式访问 Context 的缺点,例如内存泄漏。我即将发布一个我过去几年一直在开发的大型应用程序,我想知道是否应该改变我目前的方法。
到目前为止,我还没有遇到任何内存泄漏问题,但我还没有在多种设备上测试我的应用程序,也没有在大规模生产中测试。
有没有人在他发布的应用中使用过这种方法,发现这段代码没有问题?
【问题讨论】:
-
这和android studio没关系吧?仅仅使用IDE并不意味着你必须为其添加标签,标签只有在询问IDE本身的功能时才会出现
-
老实说,我真的不认为有必要使用这样的上下文,通常感觉就像是一种懒惰的方法,可以在需要的时候/在哪里使用上下文,而且通常它已经可以用于你,但是已经有很多关于这个的帖子和问题了
-
我知道这是一种懒惰的方法。虽然时间管理很重要,但如果您要处理超过 200.000 行代码的项目,则需要尽量减少所有内容。
-
time management is important这与时间管理无关。使用MyApp.getAppContext()或使用requireContext()或等效的方法在您需要的时间和地点获取上下文几乎没有什么区别。如果您要花费数天/数小时来获取所需的上下文,那么您可能需要更多地复习基础知识,因为获取上下文应该是您最不必担心的事情 -
实际上确实如此。这不仅仅是您请求上下文变量的地方,还涉及将变量从方法传递到方法。当我使用 MyApp.getAppContext() 获取上下文时,代码看起来更清晰。
标签: android performance memory-leaks android-context