会有内存泄漏或存储全局变量的最佳方法吗?

时间:2015-03-15 09:40:11

标签: android memory-leaks global-variables best-in-place

有了这个问题,主要关注的是什么是最好的方法。在我的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;
    }
}

正如您所看到的,要在非活动类中访问应用程序上下文,它被视为静态,而其他字段只是实例变量,我们在其中存储位图,是否会导致内存泄漏? 以上方法最好?或者它可以比这更好?

请帮忙。

1 个答案:

答案 0 :(得分:0)

我没有看到任何可能导致内存泄漏的内容。但是,您无需像这样存储和检索实例,您可以这样做:

GlobalApp app = ((GlobalApp)this.getApplication());  

只需确保将应用程序类名添加到清单中。请记住,仅仅因为没有内存泄漏并不意味着没有内存问题。如果您在该Application对象中保留了太多内存,那么您的应用程序可能会因OutOfMemoryError而崩溃。根据您的确切需要,您可能需要使用弱引用来避免这种情况。有关使用Application类的更多信息:Using the Android Application class to persist data