之前在项目中遇到了关于sp操作的一些问题,分享出来避免大家踩坑。
问题描述:
假如你的应用拥有多个进程,比如有两个进程,分别叫进程A和进程B,你定义了一个sp文件叫apkInfo用于存储应用的一些信息。A进程和B进程都需要存取应用信息,所以你在A进程和B进程都会操作apkInfo这个sp文件,这样会导致apkInfo存储的数据出现丢失的情况,使应用出现一些意想不到的bug(假如你存了一些比较重要的信息)。
解决方案:
一个sp文件只能被单个进程操作,如果会在不同的进程存取信息,则需要创建多个sp文件。
比如上面的问题,你需要创建两个存储应用信息的sp文件,比如分别叫apkInfoA和apkInfoB,apkInfoA只会被A进程操作,apkInfoB只能被B进程操作。
假如你需要在A进程获取存储在apkInfoB的一些信息,那你可以通过进程间传递数据的方式告诉B进程去apkInfoB拿数据,拿了数据后再传给进程A,反之一样。
切记:
一个sp文件只能被单个进程操作,不能多进程操作同一个sp文件。