Android sync adapter初体验之为什么官方文档上的代码不能work
回答:因为其实可以work
sync adapter就是google推出的一个同步框架,把各种同步操作放在一起智能管理比较省电之类的。对我而言最具体的好处反正就是,不用自己写代码了,用框架就可以了。目前的代码基本照抄官方文档。
然而呢,用框架知其然不知其所以然更头疼。
用sync adapter首先需要一个dummy authenticator,不过authenticator我们之后反正也会用的。真的非常高兴google连authenticator都帮我们写好了……我们之前还有考虑怎么写authenticator。
然后需要一个dummy content provider,我不知道我们会不会用content provider...反正先用了一个dummy的。想来大家都在一个线程里工作应该也用不上吧?谁知道呢说不定后面写着写着就用上了,反正尽量不要再改给ui的接口就好了。
然后就是用content resolver设置同步就可以了。这里遇到了两个问题。
第一个问题是request sync,即手动同步,不能work。我在SyncAdapter类里的onPerformSync方法里(sync的时候会调用这个方法)加了一个log,但是根本看不见这个log。用debug也并没有什么用。
一开始我抄官方文档的代码的时候,有两个设置选项我没看懂、以为不需要,所以就没有加入。于是我将这两个选项加入了,并且去看了看它们的解释。ContentResolver.SYNC_EXTRAS_EXPEDITED是将当前的sync请求放在请求队列的第一位,从而优先执行,不过因为我没有其他的sync请求所以这个选项没有那么大意义。ContentResolver.SYNC_EXTRAS_MANUAL是忽略其他设置、强行执行sync,但是并没有太看懂其他设置指的是什么,可能就是忽略如果没有网络就不sync之类的设置吧。
然而加入后还是没有现象。后来在stackoverflow上看到解答,SyncAdapter的工作是在另一个线程上,所以在log的时候要选择no filter才能看到这个log。恍然大悟,果然ok了。
第二个问题是periodic sync,即定时同步,在之前的基础上还是不能work。
这个也是我傻,我看官方文档上说minimum interval(最小时间间隔)是15min,结果给我看成了maximum interval(最大时间间隔),还觉得十分不可思议。因此我想设置每秒一次肯定是不可能的了。(其实也只是为了观察现象,我才不想为了观察一个日志输出等上15min)。
所以,官方文档总是能work的,但不一定会把各种坑讲清楚,还是要刷stackoverflow。
Android sync adapter初体验之为什么官方文档上的代码不能work的更多相关文章
- Android 线性布局(LinearLayout)相关官方文档 - 指南部分
Android 线性布局(LinearLayout)相关官方文档 - 指南部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用 ...
- Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分
Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商 ...
- Android接口与架构(驱动开发)翻译官方文档
Android接口与架构 Android在设备的规格与驱动方面给了你很大的自由来实现.HAL层提供了一个标准的方式来打通Android系统层与硬件层.Android系统是开源的,所以你能够在接口和性能 ...
- 【Android开发】Android Host详解(翻译自官方文档)
原文:http://android.eoe.cn/topic/summary 文档内容 API概述 Android中manifest文件需求 工作的设备 * 发现设备 * 获得和设备进行“交流”的权限 ...
- EasyTouch的使用官方文档操作步骤
对于移动平台上的RPG类的游戏,我们常用虚拟摇杆来控制人物角色的行走和一些行为,相信我们对它并不陌生,之前尝试了EasyTouch2.5,发现并没有最新版的3.1好用,2.5版本的对于自适应没有做的很 ...
- log4j2异步日志配置及官方文档的问题澄清
配置及demo 方法一全部打开 加启动参数 -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextS ...
- Google Android官方文档进程与线程(Processes and Threads)翻译
android的多线程在开发中已经有使用过了,想再系统地学习一下,找到了android的官方文档,介绍进程与线程的介绍,试着翻译一下. 原文地址:http://developer.android.co ...
- 【苦读官方文档】2.Android应用程序基本原理概述
官方文档原文地址 应用程序原理 Android应用程序是通过Java编程语言来写.Android软件开发工具把你的代码和其它数据.资源文件一起编译.打包成一个APK文件,这个文档以.apk为后缀,保存 ...
- Android 触摸手势基础 官方文档概览
Android 触摸手势基础 官方文档概览 触摸手势检测基础 手势检测一般包含两个阶段: 1.获取touch事件数据 2.解析这些数据,看它们是否满足你的应用所支持的某种手势. 相关API: Moti ...
随机推荐
- javascript中函数声明和函数表达式的区别 分类: JavaScript 2015-05-07 21:41 897人阅读 评论(0) 收藏
1.js中函数表达式的定义 表达式(expression)JavaScript中的一个短语,javascript会将其计算(evaluate)出一个结果.程序中的常量是一个最简单的表达式.变量名也是一 ...
- DotNetOpenAuth 使用指南
这几天一直在研究DotNetOpenAuth,源码处处是坑啊!写此文只为大家更顺利掌握DotNetOpenAuth使用方法,尽量少走弯路. 说明一下:我的环境是Win7 64 VS2015 upd ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 使用小写qDebug调试程序
qDebug作为printf不需要头文件 qDebug()作为cout要使用头文件<QDebug> -----debug.cpp----- -----debug.cpp----- #inc ...
- 一步步用svg做一个声波扩散动画
有个项目需要在某个坐标显示一个声波扩散(不知道这个表达对不对)的动画. 这种需求一般做法有几种,一种做成gif图片,然后贴上去,一种是用html+css3完成,要么就是画上去,这画又分两种,一种是Ca ...
- centos6 free 和 centos 7的free 的差异与对比
目录 一 centos6 free 常用参数和含义 centos6 free 命令示例 free 值讲解 计算公式 二 centos7 free 常用的参数 centos7 free 命令示例 计算公 ...
- linux ping 命令解析
不管在windows平台,还是在linux平台,ping都是非常常用的网络命令:ping命令通过ICMP(Internet控制消息协议)工作:ping可以用来测试本机与目标主机是否联通.联通速度如何. ...
- android studio启动和项目编译问题
第一次安装完成后,不要立刻启动,首先在Android Studio安装目录下的 bin 目录下,找到 idea.properties 文件,在文件最后追加disable.android.first.r ...
- Nginx配置日志格式记录cookie
Nginx配置日志格式记录cookie1. 一般用来做UV统计,或者获取用户token等. 配置方式: 在nginx的配置文件中有个变量:$http_cookie来获取cookie的信息.配置方式很 ...
- [转]Extending the User Interface in Outlook 2010
本文转自:https://msdn.microsoft.com/en-us/library/office/ee692172%28v=office.14%29.aspx#OfficeOLExtendin ...
- CentOS6.8启动Tomcat无法访问
今天笔者在CentOS6.8的生产环境上配置Java环境,安装JDK,部署Tomcat,这本来是很简单的一件事,可是最后发现通过IP一直访问不了Tomcat的默认页面. 图1. 无法访问Tomcat默 ...