SharedPreferences访问耗时吗?

the*_*osh 19 testing performance android sharedpreferences

我目前正在尝试为我的应用测试第三方服务,并且需要确定每次特定运行时正在进行的每项测试.

由于每次运行testApp时都可以进行多次测试,因此我需要识别每个测试.

我想到的是存储设备名称和构建(这里没有很多设备),以及每个测试的索引.

private String getTestId(){
    SharedPreferences settings = getPreferences(0);
    SharedPreferences.Editor editor = settings.edit();
    int testNumber = settings.getInt("id", 0);
    editor.putInt("id", testNumber+1);
    editor.commit();
    String id = Build.DEVICE + Build.VERSION.RELEASE+" - test number: "+testNumber;
    return id;
}
Run Code Online (Sandbox Code Playgroud)

每次运行测试时都会运行此功能,还是可以在不担心海岸的情况下执行此操作?

如果答案是"耗时的",那么每次我进行测试以区分每项测试时,你会建议我做什么?

aus*_*len 15

关于SharedPreferences.

首次加载后,SharedPreferences缓存,因此磁盘访问加载数据需要一段时间.您可以尝试在测试套件的早期加载SharedPreferences以避免这种惩罚.

为了保持您的数据,您应该选择SharedPreferences.Editor.apply()而不是SharedPreferences.Editor.commit(),因为appy是异步的.但是,请阅读有关两者的文档,以了解哪种情况适用于您的情况.