一般如果sharedpreferences都是在activity中更新commi() 的话,数据更新是同步的,但是如果在服务等不同的进程中更新,由于不是享有统一内存,其数据的读取将会是原来的数据,即使文件确实更新了,但程序中读到的数据依然是原来的。这和commit()与apply()没有什么关系,所以获取preferences时要保证数据同步必须将mode改为Context.MODE_MULTI_PROCESS;如下:
SharedPreferences sharedPreferences = getSharedPreferences(fileName,Context.MODE_MULTI_PROCESS);