看的SharedPreferencesImpl.java 办法呢 有人是不用apply直接自己异步commit. 也有人用反射把那个QueuedWork的sFinishers变量弄成empty.

文档上说的commit和apply, Unlike commit,which writes its preference out to persistent storage synchronously, apply commits its changes to the in-memory immediately but starts an asynchronous commit to disk,and you won't be notified of any failures. commit是有一个boolean返回值的,如果是true表示成功写入persistent storage. 但是apply是没有返回值的,你没法知道它成功还是失败.

为什么说异步执行的那些apply的任务的时间最终会嫁接到主线程上?

QueuedWork.waitToFinish()方法,会等着把这些Runnable都执行完.

QueuedWork的文档里有这么一句话 This was created for writing SharedPreference edits out asynchronously so we'd have a mechanism to wait for the writes in Activity.onPause and similar places, but we may use this mechanism for other things in the future.

然后就猜是不是Activity的onPause()方法做了什么处理 然后不是 然后再猜ActivityThread 就看到了

ActivityThread.java的多几个地方比如handlePauseActivity()方法里面就有一句 QueuedWork.waitToFinish(); 这里是一定会等着那些异步的apply提交完才往后走的,所以可能ANR.

办法呢 有人是不用apply直接自己异步commit. 也有人用反射把那个QueuedWork的sFinishers变量弄成empty.

android commit apply,关于SharedPreference的commit和apply和ANR相关推荐

  1. Android 数据访问之SharedPreference demo+笔记

    我们在开发软件的时候,常需要向用户提供软件参数设置功能,例如我们常用的微信,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是在window下通常我们会采用ini文件进行保存.如 ...

  2. git commit之后,想撤销commit

    原文 写完代码后,我们一般这样 git add . //添加所有文件 git commit -m "本功能全部完成" 执行完commit后,想撤回commit,怎么办? 这样凉拌: ...

  3. 【基础】ORACLE中on commit preserve rows和 on commit delete rows的区别

    首先on commit preserve rows 和 on commit delete rows 都是在oracle 创建临时表时用到的, delete rows用于事务相关,也就在事务结束后tru ...

  4. git 相同commit_Git 合并多次 commit 、 删除某次 commit

    Git 合并多次 commit 有时候在一个分支的多次意义相近的 commit,会把整个提交历史搞得很混乱,此时可以将一部分的 commit 合并为一个 commit,以美化整个 commit 历史, ...

  5. idea git commit之后,想撤销commit

    问题:idea提代码后,想撤销commit,怎么办捏??(T_T) To Cimmit:里面填写 HEAD~1    点击Reset即可撤销上次commit的内容: 下面会详细介绍Reset Type ...

  6. Angular标准 commit message 提交信息、commit 验证、standard-version 自动版本更替和 changelog 输出

    辅助提交工具 因为要使用 commitizen 工具来辅助提交信息填写 npm install commitizen -g 进而需要先安装 node 环境 使用 在项目目录下 # 需要先 npm in ...

  7. git commit 后出现了Aborting commit due to empty commit message。乐学偶得

    内容均为乐学偶得原创 乐学偶得版权所有 公众号:乐学Fintech Q: git commit 后出现了"Aborting commit due to empty commit messag ...

  8. git 几个commit点合并成一个commit点

    在用git做版本控制器的时候,经常会遇到以下情况: 1.在做1个功能的时候,你自己觉得代码没问题了,就本地commit,然后提交代码,在gitlab上发起和并请求,老大看完之后,觉得你还有修改的地方, ...

  9. SQL 关于apply的两种形式cross apply 和 outer apply

    SQL 关于apply的两种形式cross apply 和 outer apply 阅读目录 SQL 关于apply的两种形式cross apply 和 outer apply Sql学习第四天--S ...

最新文章

  1. 基于多源信息的深度卷积神经网络预测CircRNA疾病关联的有效方法
  2. 芯片开发者46%年收入达30万元,7纳米制程以内开发者30%超50万元
  3. 一份平民化的应用性能优化检查列表(完整篇)--转
  4. openresty入门示例
  5. SAP CRM Enterprise Search 培训材料
  6. python答题系统的代码_答题辅助python代码实现
  7. 在玩图像分类和图像分割?来挑战基于 TensorFlow 的图像注解生成!
  8. 获取上周第一天,最后一天
  9. Win10桌面整理小体会
  10. 八皇后问题(详解带注释)
  11. Android开发使用百度地图定位误差过大
  12. 清华大学生计算机系学生就业方向,这5所大学计算机专业全球顶尖,就业前景广阔,毕业就能拿高薪!...
  13. python_10_绘制图表
  14. Aerospike SSD模式下写入swb内的记录格式
  15. 软件工程师职业规划_我如何在11个月内转变职业以成为软件工程师(以及如何也可以)...
  16. 解决CPU风扇转速为“0”的问题
  17. python第一次考试_python 全栈开发,Day16(函数第一次考试)
  18. 一张小学二年级的请假条
  19. loopback地址是什么?怎么配置
  20. android 播放器 sma,SMA测评软件下载-SMA测评安卓版v1.1.2-魅卓网

热门文章

  1. Twitter创始人Jack Dorsey的每日必做和不做清单
  2. python读取多个文件夹图片_python或C++读取指定文件夹下的所有图片
  3. mysql1130_解决远程连接mysql错误1130的方法
  4. linux字体如何删除不了,如何彻底替换Ubuntu下Chrome字体(清除楷体字)
  5. EventUtil.addHandler方法
  6. ionic3 自动创建启动背景splash以及图标icon
  7. CSS--居中方式总结
  8. [POJ1463] Strategic game
  9. JS的DOM和BOM
  10. RTKLIB的主要功能