今天读到SharedPreferences源码的时候,一时突发奇想手机设置中的真对单个app清除数据的时候会清除哪些数据,虽然之前一直都知道SharedPreferences这样的数据会被清除掉,但是一直没有实践过,因此做了个测试用来验证这个结论。
测试如下:
public final String TAG = MainActivity.class.getSimpleName();
private final String preferenceName = "account";
private SharedPreferences sharedPreferences;
private String key="key";
private String value="value";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, Thread.currentThread().getStackTrace()[1].getMethodName());
sharedPreferences= getSharedPreferences(preferenceName, Context.MODE_PRIVATE);
if(getPreferenceKeyValue(key)!=null){
Log.e(TAG,getPreferenceKeyValue(key));
}
writePreference(key,value);
}
public void writePreference(String key, String value) {
sharedPreferences.edit().putString(key, value).commit();
}
public String getPreferenceKeyValue(String key){
return sharedPreferences.getString(key,null);
}
代码很简单无非是通过SharedPreference保存和读取数据,这里不作解释。
首次运行app时数据通过SharedPreference保存到本地,这时进入手机目录data/data/packageName/shared_prefs看到新建了一个account.xml文件.
接下来我们通过手机设置中的清除app数据后会看到清除前后的对比
文件夹cache,code_cache,shared_prefes被清除掉了。