Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 覆盖内存中的数据还是先读取以进行检查更好_Java_Android_Memory Management_Sharedpreferences - Fatal编程技术网

Java 覆盖内存中的数据还是先读取以进行检查更好

Java 覆盖内存中的数据还是先读取以进行检查更好,java,android,memory-management,sharedpreferences,Java,Android,Memory Management,Sharedpreferences,我的问题特别针对android。我使用共享首选项在设备上本地保存一些数据。每次我调用服务器时,响应可能是新的,也可能是我已经保存的相同内容。在不改变问题的前提下,什么是更好的设计 one:检查数据是否不存在,然后添加数据 if(!getFromSharedPrefs(dataKey).equals(newData)){ addToSharedPrefs(dataKey, newData); } 或者2:每次只需添加新数据,因为覆盖并不比读取更昂贵 addToSharedPrefs(data

我的问题特别针对android。我使用共享首选项在设备上本地保存一些数据。每次我调用服务器时,响应可能是新的,也可能是我已经保存的相同内容。在不改变问题的前提下,什么是更好的设计

one:检查数据是否不存在,然后添加数据

if(!getFromSharedPrefs(dataKey).equals(newData)){
  addToSharedPrefs(dataKey, newData);
}
或者2:每次只需添加新数据,因为覆盖并不比读取更昂贵

addToSharedPrefs(dataKey, newData);
请解释为什么最好先检查,或者为什么这两种方法是等效的


我假设答案是平台或设备不可知的,所以如果您知道objective-c或java或其他任何东西,这应该无关紧要。原因如下:(假设addToSharedPrefs(…)只是更新map-ish数据结构中的引用,而不是进行进一步的网络调用或大量计算,这没有意义,但只是以防万一……)您检索的是任何一种方式,这都是昂贵的,但第一种方式也会调用数据对象上的equals(),这可能是昂贵的,这可能没有太大的区别,但这样你就消除了它。

谢谢你的回复。我不明白
检索这两种方法如何使这两种方法等效。是的,两种情况下我都在检索,但只有第二种情况下我才在写作。这不是为案例1节省的钱吗?或者你是说案例1的节省并不重要。让我澄清一下,无论我采取哪种方法,每天都可能被打200次或更多的电话。请再看一遍问题。我以为这一切都发生在内存中,而addToSharedPrefs是在向内存写入,而不是闪存。在您的实际情况中,使用#1可能会更好,除非您的equals()方法执行一些疯狂的时间密集型操作。我一天200次一点也不多。如果这会中断用户体验,这将是一个问题,但如果这是在后台发生的,您的驱动成本(按数量级)是从服务器检索数据的网络调用,而您在这两种情况下都在这样做。让我澄清一下,无论我采取哪种方法,最终都可能每天被调用200次或更多。