我写了如下代码,
val preference by lazy {
getSharedPreferences("PreExActivity", Context.MODE_PRIVATE)
}
并想知道"getSharedPredferences"方法的根源。
所以我找到了API..
public class ContextWrapper extends Context {
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
return mBase.getSharedPreferences(name, mode);
}
}
使用我在第一个代码中编写的getSharedPreferences方法是否正确?
我认为。。
ContextWrapper().getSharedPreferences("PreExActivity", Context.MODE_PRIVATE)
是使用该方法的方法。
怎么可能?
所以你从你的AppCompatActivity
调用getSharedPreferences
方法。 这是完全正确的。
AppCompatActivity
扩展FragmentActivity
,ComponentActivity
扩展,Activity
扩展ContextThemeWrapper
,ContextWrapper
扩展Context
。Context
是一个实际定义getSharedPreferences
方法的abstract
类。
使用Activity
调用getSharedPreferences(String name, int mode)
方法实际上是调用ContextWrapper
的getSharedPreferences(String name, int mode)
,因为Activity
继承了它。