回答:因为其实可以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. 基于Web实现网络拓扑图

    想想好像好久没用写博客了! 由于最近想跳槽了(ps:尽管公司挽留,提出一些异与往常的挽留“制度”,But确实已经死心了) ,发现前一段时间一些做Hadoop,和Spark同事时常来请教网络拓扑图的有关 ...

  2. C++ STL 初探

    学过C++的人肯定会很熟悉STL标准模板库,STL其实就是封装了一系列的接口,供我们调用.很多函数或者算法的实现不需要我们从头开始写,大大提高我们的编程效率.这篇博客在简单介绍STL的情况下,会详细的 ...

  3. JVM-Java GC分析

    如何获取JavaGC日志 用动态命令查看: jstat -gc 1262 2000 20  每隔20秒输入一次日志,总共输入20次 设置GC参数打印出日志 -XX:+PrintGC 输出GC日志 -X ...

  4. HUE配置文件hue.ini 的hive和beeswax模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  5. OpenGL10-骨骼动画原理篇(2)

    接上一篇的内容,上一篇,简单的介绍了,骨骼动画的原理,给出来一个 简单的例程,这一例程将给展示一个最初级的人物动画,具备多细节内容 以人走路为例子,当人走路的从一个站立开始,到迈出一步,这个过程是 一 ...

  6. NoSQL数据库--简介

    一.What's NoSQL? NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库.这类数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的.原始的目的是为了大规模we ...

  7. Angular的第一个helloworld

    在安装了node,npm,angular-cli,vscode之后,我们来创建一个angular的应用 创建第一个hello world 使用的IDE工具为vscode 打开vscode,打开一个命令 ...

  8. 解决vuejs应用在nginx非根目录下部署时访问404的问题

    以往部署vuejs应用都是直接在nginx的location为/下直接部署,这次遇到要将vue应用部署在/vuejs-admin的非根下,使用以往部署方案直接访问就会404,这时修改步骤如下: 1.修 ...

  9. 350-两个阵列的交叉点II

    给定两个数组,编写一个函数来计算它们的交集. 例1: 输入: nums1 = [1,2,2,1],nums2 = [2,2]  输出:[2,2] 例2: 输入: nums1 = [4,9,5],,nu ...

  10. SpringBoot(三) Core Features: External Configuration(配置文件)

    码云: external-configuration 可以使用属性文件,YAML文件,环境变量和命令行参数来外部化配置 一.属性值可以直接注入到bean 系统属性值不可以 // application ...