回答:因为其实可以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 常用数据存储引擎区别 原文:https://laravel-china.org/articles/4198/mysql-common-data-storage-engine mysql有多 ...

  2. Linux下超级命令htop的学习使用

    top作为日常管理工作中最常用也是最重要的Linux系统监控工具之一,可以动态观察系统进程状况.但其缺点就是只支持键盘操作,显示也单调.作为刚才Windows转到Linux的我来说,现在有了一个更好的 ...

  3. python获取动态网站上面的动态加载的数据(selenium+Firefox)

    最近突然想到以前爬取百度学术上的参考文献,大家可以看一下以前我的写的博客:http://www.cnblogs.com/ybf-yyj/p/7351493.html,但是如果利用这个方法,太痛苦了,需 ...

  4. Android之Activity界面跳转--生命周期方法调用顺序

    这本是一个很基础的问题,很惭愧,很久没研究这一块了,已经忘得差不多了.前段时间面试,有面试官问过这个问题.虽然觉得没必要记,要用的时候写个Demo,打个Log就清楚了.但是今天顺手写了个Demo,也就 ...

  5. freeSWITCH之安装

    freeSWITCH 安装 官网教程 https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+First+Steps Windo ...

  6. elasticsearch分析系列

    http://www.opscoder.info/category/ElasticSearch/?page=2 https://www.jianshu.com/p/0908b9ee65fc https ...

  7. MySQL常用命令操作

    1. 命令行登录使用默认3306端口的MySQL: mysql -u root -p 2. 通过TCP连接管理不同端口的多个MySQL(注意:MySQL4.1以上版本才有此项功能): mysql -u ...

  8. [CQOI 2018]交错序列

    Description 题库链接 定义长度为 \(n\) 的"交错序列"为:长度为 \(n\) 序列中仅含 \(0,1\) 且没有相邻的 \(1\) .给出 \(a,b\) ,假设 ...

  9. Node.js之Express四

    Express提供的大部分功能是通过中间件函数完成的,这些中间件函数在Node.js收到请求的时点和发送响应的时点之间执行.Express的Connect模块提供了中间件框架,可以方便的在全局或路径级 ...

  10. Node.js中Process.nextTick()和setImmediate()的区别

    一.Webstrom使用node.js IDE的问题 在区别这两个函数之前来说一下Webstrom使用node.js IDE的问题,在配置Node.js的IDE了,但setImmediate().re ...