用于多线程活动的应用程序上下文的范围和类型

时间:2014-06-20 17:48:41

标签: android android-asynctask android-context

我有一个活动,我有两个线程在主线程上运行。访问网络和共享首选项。我用它们的上下文是应用程序上下文。那么,是否建议使用单个应用程序上下文实例(可能是静态的?),主要活动的成员,在onCreate中初始化;从多个线程访问,编辑共享首选项?

1 个答案:

答案 0 :(得分:2)

应用程序上下文不会出现内存泄漏,因此可以安全地存储在静态成员中。但请注意,此上下文不应用于创建View个实例(但SharedPreferences可以使用)。

如果从Activity实例启动线程,则只需使用getApplicationContext()

另一种常见方法是子类Application,然后将对象的引用存储在静态字段中。例如:

public class MyApplication extends Application
{
    static sApplication;

    @Override
    public void onCreate()
    {
        super.onCreate();
        sApplication = this;
    }

    public static Context getAppContext()
    {
        return sApplication.getApplicationContext();
    }

    ...
}