Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 何时释放静态上下文_Android - Fatal编程技术网

Android 何时释放静态上下文

Android 何时释放静态上下文,android,Android,每个人都会告诉你,保持一个静态的Context可以防止它被GC'ed,这很糟糕。但是,如果您需要一些依赖于上下文的静态资源,则需要该静态字段。那你什么时候发布?我查看了Facebook SDK的源代码,他们保留了一个参考。是否有方法连接到应用程序生命周期以释放引用,或者静态应用程序上下文是否可以接受?应用程序上下文可以,因为在应用程序以任何方式运行时,它都不会被垃圾收集。您不想做的是保存一个活动上下文,因为它包含各种其他的、与上下文无关的引用 我不确定您到底想做什么,但下面是一个存储应用程序上下

每个人都会告诉你,保持一个静态的
Context
可以防止它被GC'ed,这很糟糕。但是,如果您需要一些依赖于
上下文的静态资源,则需要该静态字段。那你什么时候发布?我查看了Facebook SDK的源代码,他们保留了一个参考。是否有方法连接到应用程序生命周期以释放引用,或者静态应用程序上下文是否可以接受?

应用程序上下文可以,因为在应用程序以任何方式运行时,它都不会被垃圾收集。您不想做的是保存一个活动上下文,因为它包含各种其他的、与上下文无关的引用

我不确定您到底想做什么,但下面是一个存储应用程序上下文的类的示例

class myClass {
    private final Context mContext;

    public myClass(Context context) {
        this.mContext = context.getApplicationContext();
    }

    public String getSomeString() {
        return mContext.getString(R.string.name);
    }
}