当前位置: 首页 > 面试题库 >

Android SharedPreferences中提交和应用之间的区别[重复]

宦子琪
2023-03-14
问题内容

SharedPreferences用于在Android中保存应用程序数据。

commit()apply()两者都用来保存在共享偏好的变化。

如Android库中所述:

public abstarct void apply():

与commit()将其首选项同步写到持久性存储中的方式不同,apply()立即将其更改提交到内存中的SharedPreferences,但是启动对磁盘的异步提交,并且不会收到任何故障通知。如果此SharedPreferences上的另一个编辑器在apply()仍未完成的情况下执行常规commit(),则commit()将阻塞,直到所有异步提交以及提交本身为止。

public abstract boolean commit ():

提交您的首选项更改,从此编辑器回到正在编辑的SharedPreferences对象。这将自动执行所请求的修改,从而替换SharedPreferences中当前存在的任何内容。

这是否意味着commit()与相比,所做的更改是即时的apply()?哪一个更好?

如果在下一个即时活动中需要使用相同的共享首选项值,应该使用哪个?正如我所看到的,如果Preference的值已更新,则在应用程序重新启动之前它不会得到反映。


问题答案:

Commit()是瞬时的,但执行磁盘写入。如果您在ui线程上,则应调用apply()异步线程。



 类似资料:
  • Bellow是实现Runnable类的代码 得到的输出是:pool-1-thread-1…..0线程“main”java.lang.NullPointerException中的ExecutorServiceWithRunnableCallable.main(ExecutorSServiceWithRunnable.java:15) 以下是Callable的代码 **获得的输出为:**池-1-线程-

  • 问题内容: 可能重复: JavaScript中的“(function(){})()”和“(function(){}())”在功能上是否相等? 这是我还没有弄清楚的事情,但是我一直在使用function(){}()只是因为如果添加括号,我的VIM语法高亮显示就搞砸了,尽管我已经看到了(function(){})()大约很多次,也许是IE的事情? 编辑: 问题答案: 基本上,括号是一种约定,用于表示紧

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • 问题内容: 我有两个问题,可能需要一些帮助来理解它们。 和之间有什么区别?我知道这 意味着在单独的外壳中运行命令,然后将其传递给变量。有人可以帮助我理解这一点吗?如果我错了,请纠正我。 如果我们可以使用并且效果很好,那我为什么不能使用它呢?两者的执行周期有何不同? 问题答案: 语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式是现代代名词,代表命令替换;这意味着运行并将其输出放在此处。