回答:因为其实可以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的更多相关文章

  1. Android 线性布局(LinearLayout)相关官方文档 - 指南部分

    Android 线性布局(LinearLayout)相关官方文档 - 指南部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用 ...

  2. Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分

    Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商 ...

  3. Android接口与架构(驱动开发)翻译官方文档

    Android接口与架构 Android在设备的规格与驱动方面给了你很大的自由来实现.HAL层提供了一个标准的方式来打通Android系统层与硬件层.Android系统是开源的,所以你能够在接口和性能 ...

  4. 【Android开发】Android Host详解(翻译自官方文档)

    原文:http://android.eoe.cn/topic/summary 文档内容 API概述 Android中manifest文件需求 工作的设备 * 发现设备 * 获得和设备进行“交流”的权限 ...

  5. EasyTouch的使用官方文档操作步骤

    对于移动平台上的RPG类的游戏,我们常用虚拟摇杆来控制人物角色的行走和一些行为,相信我们对它并不陌生,之前尝试了EasyTouch2.5,发现并没有最新版的3.1好用,2.5版本的对于自适应没有做的很 ...

  6. log4j2异步日志配置及官方文档的问题澄清

    配置及demo 方法一全部打开 加启动参数 -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextS ...

  7. Google Android官方文档进程与线程(Processes and Threads)翻译

    android的多线程在开发中已经有使用过了,想再系统地学习一下,找到了android的官方文档,介绍进程与线程的介绍,试着翻译一下. 原文地址:http://developer.android.co ...

  8. 【苦读官方文档】2.Android应用程序基本原理概述

    官方文档原文地址 应用程序原理 Android应用程序是通过Java编程语言来写.Android软件开发工具把你的代码和其它数据.资源文件一起编译.打包成一个APK文件,这个文档以.apk为后缀,保存 ...

  9. Android 触摸手势基础 官方文档概览

    Android 触摸手势基础 官方文档概览 触摸手势检测基础 手势检测一般包含两个阶段: 1.获取touch事件数据 2.解析这些数据,看它们是否满足你的应用所支持的某种手势. 相关API: Moti ...

随机推荐

  1. puppet的使用:puppet的hello world

    这个例子完成将master节点上的一个文件放至agent节点上的功能 创建要传输的文件 echo "helloWorld" > /etc/puppet/modules/pup ...

  2. 极高效内存池实现 (cpu-cache)

    视频请看 : http://edu.csdn.net/course/detail/627 1.内存池的目的 提高程序的效率 减少运行时间 避免内存碎片 2.原理   要解决上述两个问题,最好的方法就是 ...

  3. switch开关

    1.开关按钮 效果如下图 2.css代码 .form-switch{ display: inline-block; } .form-switch input[type="checkbox&q ...

  4. 酷派大神F2使用QPST进行nv备份恢复,解决无信号问题

    测试机器: 大神F2联通版 8675_W00 系统COOLUI55     写贴原因: 自己无意间刷错了包,结果手机无信号,进入工程模式怎么设置都没有用.尝试过系统还原(备份过).刷新的ROM.线刷, ...

  5. java.lang.ArithmeticException: Rounding necessary

    这个错误就是精度丢失问题 https://blog.csdn.net/qq496013218/article/details/70792655

  6. SpringMVC异常处理机制

    SpringMVC异常处理机制 springMVC会将所有在doDispatch方法中的异常捕获,然后处理.无法处理的异常会抛出给容器处理. 在doDispatch()中调用processDispat ...

  7. Java 并行编程!

    多核处理器现在已广泛应用于服务器.台式机和便携机硬件.它们还扩展到到更小的设备,如智能电话和平板电脑.由于进程的线程可以在多个内核上并行执行,因此多核处理器为并发编程打开了一扇扇新的大门.为实现应用程 ...

  8. 百度地图VUE-REACT

    针对目前火热的前端开发框架React和VUE,为了方便使用这两种框架开发的同学们能更好的使用百度地图JSAPI,我们分别开源了基于百度地图JSAPI的React组件库和VUE组件库.VUE:https ...

  9. 利用OpenCV检测手掌(palm)和拳头(fist)

    思路:利用训练好的palm.xml和fist.xml文件,用OpenCV的CascadeClassifier对每一帧图像检测palm和fist,之后对多帧中检测到的palm和fist进行聚类分组,满足 ...

  10. [转]HTTP请求中的form data和request payload的区别

    本文转自:http://www.cnblogs.com/btgyoyo/p/6141480.html jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的 ...