有了这个问题,主要关注的是什么是最好的方法。在我的Android应用程序中,Application类的子类主要有两个原因,
1),在整个应用程序中维护全局状态,
2),能够在非活动类中初始化和使用SharedPreferences。
代码有点像这样,
public class GlobalApp extends Application {
private static GlobalApp instance;
private Bitmap bitmap;
@Override
public void on create(){
super.on create();
instance = this;
}
public static GlobalApp getInstance() {
return instance;
}
public void setBitmap(Bitmap b) {
this.bitmap = b;
}
}
正如您所看到的,要在非活动类中访问应用程序上下文,它被视为静态,而其他字段只是实例变量,我们在其中存储位图,是否会导致内存泄漏? 以上方法最好?或者它可以比这更好?
请帮忙。
答案 0 :(得分:0)
我没有看到任何可能导致内存泄漏的内容。但是,您无需像这样存储和检索实例,您可以这样做:
GlobalApp app = ((GlobalApp)this.getApplication());
只需确保将应用程序类名添加到清单中。请记住,仅仅因为没有内存泄漏并不意味着没有内存问题。如果您在该Application对象中保留了太多内存,那么您的应用程序可能会因OutOfMemoryError而崩溃。根据您的确切需要,您可能需要使用弱引用来避免这种情况。有关使用Application类的更多信息:Using the Android Application class to persist data