我们如何在没有任何实现的情况下使用getApplicationContext()?

时间:2017-07-13 04:39:05

标签: android android-sharedpreferences

SharedPreferences pref =getApplicationContext().getSharedPreferences("MyPref", 0);

Editor editor = pref.edit();

这是我在sharedpreferences上获得的一个代码。在这个getApplicationContext()getSharedPreferences()方法中使用了Context类,但getApplicationContext()getSharedPreferences()都是抽象的,那么我们如何在没有任何实现的情况下使用它们呢?

编辑1:

我说使用上面的代码创建了sharedpreferences对象,但是所使用的方法都是抽象的,那么我们如何在不实现它们的情况下使用它们呢?

2 个答案:

答案 0 :(得分:0)

这取决于你在哪里以及你想要完成什么。 Please read more about Android context。一般来说,您想要访问共享首选项,因为您想存储一些值,通常您在Activity类中。在Activity中,您有两种方法可以访问上下文: getBaseContext() getApplicationContext()。前者将为您提供基本上下文,每个实例都是唯一的,后者将为您提供应用程序上下文,每个进程都是唯一的。系统将在创建每个Activity时为每个Activity创建基本上下文的实现,并在创建进程时为您创建应用程序上下文实现。你看到的是他们的抽象声明,显然。

答案 1 :(得分:0)

getApplicationContext() and getSharedPreferences() are abstract - 它们在Context课程中是抽象的,但在其中已经实施。例如,ActivtyContext的子类,它具有getApplicationContext()的实现,如下所示:

@Override
public Context getApplicationContext() {
    return mBase.getApplicationContext();
}

mBaseContext的某些非公开实现,当Activity附加到ActivityThread时,$post->user->name已分配给$post->likes->user_id

您可以轻松检查 Android来源,并自行查找此内容以及更多其他有趣内容。