为什么ContentResolverext.ajax.request同步Sync不会触发同步

拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3ae98cbdf6d56610-ua98).
重新安装浏览器,或使用别的浏览器扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
||外语考试
| | | | | | | | |
| 视频教程|
深入理解Android:卷II[按需印刷]
阅读客户端:
爱阅读客户端如果您尚未下载客户端,点击下面图标下载
支持阅读载体:
Ebook价:¥30.00
ISBN:7上架时间:出版日期:2012 年8月开本:16开页码:440版次:1-1
所属分类:
  经典畅销书《深入理解Android:卷I》姊妹篇,51CTO移动开发频道和开源中国社区一致鼎力推荐!
从系统设计者的角度对Java Framework包含的重要模块和服务的源代码进行细致剖析,深刻揭示其实现原理和工作机制
《深入理解Android:卷II》是“深入理解Android”系列的第二本,第一本书上市后得到了广大读者的高度评价,在Android开发者社群内口口相传。本书不仅继承了第一本的优点、改正了其在细微处存在的一些不足,而且还在写作的总体思想上进行了创新,更强调从系统设计者的角度去分析Android系统中各个模块内部的实现原理和工作机制。从具体内容上讲,本书的重点是Android Framework的Java层,对Java层涉及的核心模块和服务进行了深入而细致的分析。通过本书,读者不仅能对Android系统本身有更深入的理解,而且还能掌握分析大型复杂源代码的能力。
全书共8章:第1章介绍了阅读本书所需要做的准备工作,包括Android 4.0源码的下载和编译、Eclipse环境的搭建,以及Android系统进程(system_process)的调试等;第2章对Java Binder和MessageQueue的实现进行了深入分析;第3章详细剖析了SystemServer的工作原理,这些服务包括EntropyService、DropboxManagerService、DiskStatsService、DeviceStorageMonitorService、SamplingProfilerService和ClipboardService;第4章对系统中负责Package信息查询和APK安装、卸载、更新等工作的服务PackageManagerService进行了详细分析;第5章则对Android系统中负责电源管理的核心服务 PowerManagerService的原理进行了一番深入的分析;第6章以ActivityManagerService为分析重点,对它的启动、Activity的创建和启动、BroadcastReceiver的工作原理、Android中的进程管理等内容展开了较为深入的研究;第7章对ContentProvider的创建和启动、SQLite、Cursor query和close的实现等进行了深入分析;第8章以ContentService和AccountManagerService为分析对象,介绍了数据更新通知机制的实现,以及账户管理和数据同步等相关知识。
  邓凡平,资深Android开发工程师和系统工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,经验十分丰富。《深入理解Android:卷I》的作者,同时也是“深入理解Android”系列图书的总策划。目前就职于国内领先的Android企业中科创达(ThunderSoft),负责Android
Framework的开发和维护。喜欢钻研,乐于分享,活跃于CSDN、51CTO和开源中国等专业技术社区,撰写的Android
Framework源码分析的系列文章深受读者欢迎。此外,他对Linux内核、C/C++/Python相关的技术,以及高性能网络服务器和多核并行开发等也有一定的研究。
《深入理解Android:卷II》
第1章 搭建Android源码工作环境 / 1
1.1 Android系统架构 / 2
1.2 搭建开发环境 / 3
1.2.1 下载源码 / 3
1.2.2 编译源码 / 4
1.2.3 利用Eclipse调试system_process / 5
1.3 本章小结 / 11
第2章 深入理解Java Binder和MessageQueue / 12
2.1 概述 / 13
2.2 Java层中的Binder架构分析 / 13
2.2.1 Binder架构总览 / 13
2.2.2 初始化Java层Binder框架 / 14
2.2.3 addService实例分析 / 17
2.2.4 Java层Binder架构总结 / 26
2.3 心系两界的MessageQueue / 27
2.3.1 MessageQueue的创建 / 27
2.3.2 提取消息 / 28
2.3.3 nativePollOnce函数分析 / 31
  本书主要内容及特色
  本书是笔者“深入理解Android”系列的第二本,这一本将关注重点放在了Android Framework的Java层。在众多可供分析的知识点中,笔者另辟蹊径,选择了SystemServer中的服务(Service)作为主人公。这些Service大体可由图1来表示。
  图1SystemServer中的服务
  由图1可知,SystemServer中的服务可划分为7大类共43项(包括Watchdog在内):
  位于第一大类的是Android的核心服务,如ActivityManagerService、WindowManager-Service等。
  位于第二大类的是和通信相关的服务,如Wifi的相关服务、Telephone的相关服务。
  位于第三大类的是和系统功能相关的服务,如AudioService、MountService、UsbService等。
  位于第四大类的是BatteryService、VibratorService等服务。
  位于第五大类的是EntropyService、DiskStatsService、Watchdog等相对独立的服务。
  位于第六大类的是蓝牙服务。
  位于第七大类的是UI方面的服务,如状态栏服务、通知管理服务等。
  以上这些服务就是Android Framework Java层的核心。毫不夸张地说,它们也是Android系统的基石。另外,这些服务的内容远非一本书所能囊括。作为Android Java层Framework分析的先头部队,本书涵盖了以下内容:
  第1章,介绍了阅读本书需要做的一些准备工作,包括Android 4.0源码的下载和编译、Eclipse开发环境的搭建,以及Android系统进程(system_process)的调试等。
  第2章,介绍了Java Binder和MessageQueue的实现。
  第3章,介绍了SystemServer,并分析了图1中第五类包含的服务的工作原理。这些服务包括EntropyService、DropBoxManagerService、DiskStatsService、DeviceStorageMonitorService、SamplingProfilerService和ClipboardService。
  第4章,分析了PackageManagerService,该服务负责Android系统中的Package信息查询和APK安装、卸载、更新等方面的工作。
  第5章,讲解了PowerManagerService,它是Android中电源管理的核心服务。本章对其中的WakeLock、Power按键处理、BatteryStatsService和BatteryService都做了一番较为深入的分析。
  第6章,以ActivityManagerService为分析重点,该服务是Android 的核心服务。本章对ActivityManagerService的启动、Activity的创建和启动、BroadcastReceiver的工作原理、Android中的进程管理等内容进行了较为深入的研究。
  第7章,对ContentProvider的创建和启动、SQLite相关知识、Cursor query和close的实现等进行了较为深入的分析。
  第8章,以ContentService和AccountManagerService为分析对象,介绍了数据更新通知机制的实现、账户管理和数据同步等方面的知识。
770)this.width=770;' />
作者其它作品¥69.00¥113.00
同类热销商品¥108.00¥86.40
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights Reserved安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&本文从使用角度上介绍了如何创建和使用android 同步框架,大部分是官方文档资料,但是有些小坑需要注意。
总体上,使用同步框架需要实现三部份代码:
1.创建账户类型(Account)
2.创建Stub ContentProvider
3.创建同步适配器(SyncAdapter)
参考资料:
创建账户类型
1.创建一个授权类
public class Authenticator extends AbstractAccountAuthenticator {
2.创建一个授权service
package com.crazyman.
import android.app.S
import android.content.I
import android.os.IB
public class AuthenticatorService extends Service {
private Authenticator mA
public AuthenticatorService() {
public void onCreate() {
super.onCreate();
mAuthenticator = new Authenticator(this);
public IBinder onBind(Intent intent) {
return mAuthenticator.getIBinder();
3.创建xml/authenticator.xml文件
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="/apk/res/android"
android:accountType="com.crazyman.accountsyncdemo.type"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:smallIcon="@mipmap/ic_launcher" /&
PS:这里一定要注意,android:label=”@string/app_name” 不能用字符串代替,一定要用字符串资源才行!
4.在AndroidManifest.xml文件中加入权限和service
android:name="android.permission.AUTHENTICATE_ACCOUNTS" /&
android:name=".AuthenticatorService"
android:enabled="true"
android:exported="true"&
android:name="android.accounts.AccountAuthenticator" /&
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" /&
实现以上代码后,安装APP就可以发现,在设置中已经可以创建上面指定类型的账号了。
创建Stub Content Provider
1. 创建一个StubProvider类
public class StubProvider extends ContentProvider {
2.在Android Manifest文件中加入provider
android:name="com.crazyman.accountsyncdemo.StubProvider"
android:authorities="com.crazyman.accountsyncdemo.provider"
android:exported="false"
android:syncable="true" /&
创建同步adapter
1.创建adapter类
public class SyncAdapter extends AbstractThreadedSyncAdapter {
public SyncAdapter(Context context, boolean autoInitialize) {
super(context, autoInitialize);
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
Log.d("account sync", "-----------onPerformSync--------");
2.创建同步service
public class SyncService extends Service {
private static SyncAdapter sSyncAdapter = null;
private static final Object sSyncAdapterLock = new Object();
public SyncService() {
public void onCreate() {
super.onCreate();
synchronized (sSyncAdapterLock) {
sSyncAdapter = new SyncAdapter(getApplicationContext(), true);
public IBinder onBind(Intent intent) {
return sSyncAdapter.getSyncAdapterBinder();
3.创建xml/syncadapter.xml文件:
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="/apk/res/android"
android:contentAuthority="com.crazyman.accountsyncdemo.provider"
android:accountType="com.crazyman.accountsyncdemo.type"
android:userVisible="false"
android:supportsUploading="false"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"/&
4.在AndroidManifest.xml中加入权限和同步Service:
android:name="android.permission.INTERNET" /&
android:name="android.permission.READ_SYNC_SETTINGS" /&
android:name="android.permission.WRITE_SYNC_SETTINGS" /&
android:name="android.permission.AUTHENTICATE_ACCOUNTS" /&
android:name=".SyncService"
android:enabled="true"
android:exported="true"
android:process=":sync"&
android:name="android.content.SyncAdapter" /&
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" /&
使用同步功能
Account account = new Account("account_test", "com.crazyman.accountsyncdemo.type");
AccountManager accountManager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
accountManager.addAccountExplicitly(account, null, null);
ContentResolver.setIsSyncable(newAccount,MyContract.CONTENT_AUTHORITY,1);
ContentResolver.setSyncAutomatically(newAccount,MyContract.CONTENT_AUTHORITY,true);
ContentResolver.addPeriodicSync(newAccount,MyContract.CONTENT_AUTHORITY, Bundle.EMPTY,10);
android 源码中设置的最短同步周期是1分钟,所以用模拟器测试比较准确,而国产机会进行各种修改,我在魅蓝NOTE2中测试最短是30分钟
手动调用同步功能:
ContentResolver.requestSync(newAccount,MyContract.CONTENT_AUTHORITY,Bundle.EMPTY);
本文已收录于以下专栏:
相关文章推荐
RequestSync是同步的意思,主要是和ContentResolver进行交互,同步数据库信息。
2, RequestSync详细流程
&#160; RequestSync的main方法如...
上一篇博文我先介绍了账号与同步的账号管理,这篇就介绍一下另一部分,就是android给提供的sync同步机制的使用。
其实sync机制的使用和上一篇博文中介绍的账号管理很类似,也是基于binder机...
在用微信的时候,发现微信建立了自己的独立账户管理,同时在联系人中,可以直接点击发送信息,查看朋友圈等功能,感觉挺方便了
然后就做了相关方面的调研,主要从两个方面,进行了研究
1、账号管理的是实现机制和...
在android提供的sdk中,samples目录下有一个叫SampleSyncAdapter的示例,它是一个账号与同步的实例,比如Google原始的android手机可以使用Google账号进行数据...
Android2.0中加入了一个新的包android.accounts,该包主要包括了集中式的账户管理API,用以安全地存储和访问认证的令牌和密码,比如,我们的手机存在多个账户,每个账户下面都有不同的...
上一篇博文我介绍了账号与同步的同步实现过程,其中提供了一个工系统进程调用的服务,那么这个服务到底是怎么被启动和使用的呢?这篇博文我就大体梳理一下启动过程。
其实作为一个一般开发人员,我们只要知道要想知...
一直很忙,忙的不可开交,以前我说有时间就来写点东西,然后最近一直很忙,连论文,加新项目,事情挺多的,android源码还是很久以前下载的,今天sync发现突然不行了,报错:
error.GitErr...
Fence提出的原因如下:
在复杂的DMA管线如图形管线(多媒体,摄像头,GPU以及显示设备),一个buffer的消费者需要知道生产者什么时候完成生产(即创建一个Buffer,并像里面放置消费者所需要...
从启动说起
Android系统加载时,首先启动init进程,该进程会启动Zygote进程。Zygote进程执行/system/bin/app_process程序。app_process程序在执行...
获取系统中注册的帐号类型列表是一个典型的用例。比如,在系统设置界面中选择“添加帐户”,这是,系统显示一个所有支持的帐户类型的列表界面(ChooseAccountActivity)供用户点选。另外,在C...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 request 同步 的文章

 

随机推荐