回答:因为其实可以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. (转)MySQL 插入数据时,中文乱码问题的解决

    MySQL 插入数据时,中文乱码问题的解决  原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插 ...

  2. certificate verify fails (https://gems.ruby-china.org错误

    首先:执行这一步报错的背景是: 更换gems源, 通常执行 gem sources --add https://gems.ruby-china.org/ --remove https://rubyge ...

  3. 【树】Construct Binary Tree from Preorder and Inorder Traversal

    题目: Given preorder and inorder traversal of a tree, construct the binary tree. 思路: 线序序列的第一个元素就是树根,然后 ...

  4. FoxitReader软件下载并安装(图文详解)

    不多说,直接上干货! FoxitReader官方网址:https://www.foxitsoftware.com/downloads/ 结束 欢迎大家,加入我的微信公众号:大数据躺过的坑        ...

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

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

  6. <转载> 58到家数据库设计规范

    原文地址: http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959906&idx=1&sn=2cbdc66cf ...

  7. Rails中实现批量删除

    在Rails生成的控制器模版中,包含的destroy只能处理单个对象,而批量删除要求能够同时处理多个对象,这需要自定义一个批量操作action.批量删除的效果图如下:

  8. 关于js的 for...in 你了解多少

    For...In 声明用于对数组或者对象的属性进行循环/迭代操作. 1. 求value: 对于数组 ,迭代出来的是数组元素,对于对象,迭代出来的是对象的属性值: 1)数组示例 var x var my ...

  9. VM CentOS7 网络配置问题汇总

    0. 前言 在进行配置之前,我们首先需要明确几个概念: I. VM的网络连接方式 ①. 桥接模式(Bridge)   此模式下,VM centOS 在网络中作为一台独立主机存在,它可以访问网络中的任何 ...

  10. spring-boot前端参数单位转换

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import ja ...