我写了如下代码,
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)
是使用该方法的方法。
怎么可能?
因此您正在从getSharedPreferences
调用AppCompatActivity
方法。这是完全正确的。
AppCompatActivity
扩展FragmentActivity
,扩展ComponentActivity
,扩展Activity
,扩展ContextThemeWrapper
,扩展ContextWrapper
,扩展Context
。 Context
是一个abstract
类,实际上定义了getSharedPreferences
方法。
由于getSharedPreferences(String name, int mode)
继承了Activity
,因此实际上是在调用ContextWrapper
的getSharedPreferences(String name, int mode)
。