- getDefaultSharedPreferences是默认的sharedpreferences,性能最优。如果使用自己创建的sharedpreferences,在第一次创建的时候会需要150ms多。而使用DefaultSharedPreferences可能由于缓存等原因每次使用维持在个位数。
- 清空sharedpreferences的方法:
- editor.clear();
- editor.commit();
存储共享变量的文件路径位于“/data/data/应用程序包/shared_prefs”目录 - 跨进程使用SharedPreferences的方法:
进程A,写:
SharedPreferences preferences = getSharedPreferences("count",
Context.MODE_MULTI_PROCESS | Context.MODE_WORLD_READABLE);
Editor editor = preferences.edit();
editor.putString("name", "xichao");
editor.commit();
进程B,读:
Context useCount;
try {
useCount = createPackageContext("com.example.client",
Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
SharedPreferences prefs = useCount.getSharedPreferences("count",
Context.MODE_MULTI_PROCESS);
String name = prefs.getString("name", "");
} catch (NameNotFoundException e) {
e.printStackTrace();
}
写的时候Context.MODE_WORLD_READABLE表示跨进程可读,但是读到之后如果A的值有更改,B并不会更新,因为B读的是缓存数据。解决办法就是Context.MODE_MULTI_PROCESS。需要注意的是写数据的进程A,这个xml文件的getsharedpreferences都需要加上这个mode组合:
Context.MODE_MULTI_PROCESS | Context.MODE_WORLD_READABLE