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