时间:2015-05-15 来源:

Android时间更新机制之网络更新时间 【综合】

转载请注明出处:http://blog.csdn.net/droyon/article/details/45701257

public void systemRunning() { registerForTelephonyIntents(); registerForAlarms(); registerForConnectivityIntents(); HandlerThread thread = new HandlerThread(TAG); thread.start(); mHandler = new MyHandler(thread.getLooper()); // Check the network time on the new thread mHandler.obtainMessage(EVENT_POLL_NETWORK_TIME).sendToTarget(); mSettingsObserver = new SettingsObserver(mHandler, EVENT_AUTO_TIME_CHANGED); mSettingsObserver.observe(mContext); } 1、registerForTelephonyIntents该方法,web前端制作注册监听来自Telephony Ril相关的广播.此部分会在moderm相关同步时间中介绍.

private void registerForTelephonyIntents() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(TelephonyIntents.ACTION_NETWORK_SET_TIME); intentFilter.addAction(TelephonyIntents.ACTION_NETWORK_SET_TIMEZONE); mContext.registerReceiver(mNitzReceiver, intentFilter); } 2、registerForAlarms此方法,div前端切图是配合第“一”中介绍的mPendingPollIntent 来工作的web切图报价,主要作用是构造handler Message并再次发起时间同步请求. 3、registerForConnectivityIntents此方法监听移动数据连接,手机html制作移动网络连接后符合w3c标准,收到信息,符合w3c标准发起时间同步请求.此部分会在moderm相关同步时间中介绍.

networkTimeUpdater = new NetworkTimeUpdateService(context); 在ActivityManagerService的systemReady方法中网页外包接活, so no trusted time available return false; } if (LOGD) Log.d(TAG, (int) mTimeout)) { mHasCache = true; mCachedNtpTime = client.getNtpTime(); mCachedNtpElapsedRealtime = client.getNtpTimeReference(); mCachedNtpCertainty = client.getRoundTripTime() / 2; return true; } else { return false; } } 在该方法逻辑中承接网页制作, EVENT_AUTO_TIME_CHANGED); mSettingsObserver.observe(mContext); 我们的第二部分web切图报价,很多地方都会主动或者被动发送Handler Message请求,网站div+css在我们Handler中符合w3c标准, null); mPendingPollIntent = PendingIntent.getBroadcast(mContext, pollIntent, 0);//时间同步有可能超时,div+css制作使用该PendingIntent进行(间隔再次发起)时间同步. mPollingIntervalMs = mContext.getResources().getInteger( com.android.internal.R.integer.config_ntpPollingInterval);//10天 mPollingIntervalShorterMs = mContext.getResources().getInteger( com.android.internal.R.integer.config_ntpPollingIntervalShorter);//30秒 mTryAgainTimesMax = mContext.getResources().getInteger( com.android.internal.R.integer.config_ntpRetry); mTimeErrorThresholdMs = mContext.getResources().getInteger( com.android.internal.R.integer.config_ntpThreshold); //LEUI-START [BUG][MOBILEP-6067] [System time sync added mDefaultServer = ((NtpTrustedTime) mTime).getServer(); mNtpServers.add(mDefaultServer); for (String str : SERVERLIST) { mNtpServers.add(str); } mTryAgainCounter = 0; //LEUI-END [BUG][MOBILEP-6067] [System time sync added } 在该构造上承接网页制作,有几个重要的变量: 1、mPollingIntervalMs:多次尝试同步时间无果,承接网页制作10天会再次发起时间同步请求 2、mPollingIntervalShorterMs :时间同步超时web切图报价,再次发起时间同步请求. 3、SERVERLIST:时间同步服务器.此处建议多增加几个时间同步服务器,手机html制作大陆、美国、台湾等多梯度配置. 4、初始化NtpTrustedTime对象.

mActivityManagerService.systemReady(new Runnable() { @Override public void run() { try { if (networkManagementF != null) networkManagementF.systemReady(); } catch (Throwable e) { reportWtf("making Network Managment Service ready",监听来自设置等发起的时间同步请求.在SettingsObserver中构建handler Message请求网页外包接活,发起时间同步.

mTime = NtpTrustedTime.getInstance(context); 一、NetworkTimeUpdateService初始化时间同步环境 开机后,网页外包接活会调用该类的systemRunning方法web前端制作, intentFilter); } 4、构建Message, int timeout) { DatagramSocket socket = null; try { socket = new DatagramSocket(); socket.setSoTimeout(timeout); InetAddress address = InetAddress.getByName(host); byte[] buffer = new byte[NTP_PACKET_SIZE]; DatagramPacket request = new DatagramPacket(buffer, address, TRANSMIT_TIME_OFFSET, buffer.length); socket.receive(response); long responseTicks = SystemClock.elapsedRealtime(); long responseTime = requestTime + (responseTicks - requestTicks); // extract the results long originateTime = readTimeStamp(buffer, RECEIVE_TIME_OFFSET); long transmitTime = readTimeStamp(buffer, "round trip: " + roundTripTime + " ms"); // if (false) Log.d(TAG, "request time failed: " + e); return false; } finally { if (socket != null) { socket.close(); } } return true; } 我们传入在NetworkTimeUpdateService传入的服务器地址以及请求超时时间符合w3c标准,向host服务器发起请求,符合w3c标准并将相应结果按照编解码规则封装进二进制数组.

try { startBootstrapServices(); startCoreServices(); startOtherServices(); } catch (Throwable ex) { Slog.e("System", "************ Failure starting system services", ex); throw ex; } startOtherServices方法中,div+css制作会初始化该类实例:

private void onPollNetworkTime(int event) { //1、是否勾选自动同步时间配置 // If Automatic time is not set,如果当前时间刚通过moderm更新不久web切图报价, // no need to sync to NTP. if (mNitzTimeSetTime != NOT_SET && refTime - mNitzTimeSetTime < mPollingIntervalMs) { resetAlarm(mPollingIntervalMs); return; } //3、如果机器刚启动符合w3c标准,即10天网页外包接活,或者设置等发起的主动更新时间请求,网页外包接活则发起网络时间同步请求.否则web前端制作, "System time = " + currentTime); // Get the NTP time if (mLastNtpFetchTime == NOT_SET || refTime >= mLastNtpFetchTime + mPollingIntervalMs || event == EVENT_AUTO_TIME_CHANGED) { if (DBG) Log.d(TAG, "Before Ntp fetch"); //3.1、是否含有时间缓冲,div前端切图如无web切图报价,发起时间同步,手机html制作 // force refresh NTP cache when outdated if (mTime.getCacheAge() >= mPollingIntervalMs) { //LEUI-START [BUG][MOBILEP-6067] [System time sync added //mTime.forceRefresh(); int index = mTryAgainCounter % mNtpServers.size(); if (DBG) Log.d(TAG, "mTryAgainCounter = " + mTryAgainCounter + ";mNtpServers.size() = " + mNtpServers.size() + ";index = " + index + ";mNtpServers = " + mNtpServers.get(index)); //3.1.1、遍历时间服务器,符合w3c标准发起时间同步 if (mTime instanceof NtpTrustedTime) { ((NtpTrustedTime) mTime).setServer(mNtpServers.get(index)); mTime.forceRefresh(); ((NtpTrustedTime) mTime).setServer(mDefaultServer); } else { mTime.forceRefresh(); } //LEUI-END [BUG][MOBILEP-6067] [System time sync added } //3.2、获取最新同步的时间缓冲数据网页外包接活,如无,jpg或psd转html则再次发起时间同步web前端制作,即30秒. // only update when NTP time is fresh if (mTime.getCacheAge() < mPollingIntervalMs) { final long ntp = mTime.currentTimeMillis(); mTryAgainCounter = 0; // If the clock is more than N seconds off or this is the first time it's been // fetched since boot, set the current time. //3.2.1、如果开机第一次同步或者最新时间与当前时间差别超过mTimeErrorThresholdMs即25秒,承接网页制作则进行时间设定.否则认定新同步时间与当前时间差别不大web切图报价, "For initial setup, "Ntp time to be set = " + ntp); // Make sure we don't overflow, "Ntp time is close enough = " + ntp); } mLastNtpFetchTime = SystemClock.elapsedRealtime(); } else { // Try again shortly //3.3 如果不大于最大同步次数web前端制作,30秒后进行时间同步,div+css制作否则承接网页制作,10天后更新. mTryAgainCounter++; if (mTryAgainTimesMax < 0 || mTryAgainCounter <= mTryAgainTimesMax) { resetAlarm(mPollingIntervalShorterMs); } else { // Try much later mTryAgainCounter = 0; resetAlarm(mPollingIntervalMs); } return; } } //4、如果刚更新时间不久,承接网页制作则10天后再发起时间同步请求. resetAlarm(mPollingIntervalMs); } 四、三中介绍了时间获取的相关逻辑web切图报价,我们接下来介绍下时间是如何发起同步的,手机html制作这个方法的主角为:NtpTrustedTime 在该类中通过forceRefresh方法来更新获取服务器时间.

综述:Android网络时间更新符合w3c标准,大体分两类.1、moderm相关更新,html切图制作2、网络更新.本次主要介绍网路更新时间网页外包接活,该类运行在SystemServer(ActivityManagerService)进程中.它有点特殊web前端制作,从名字来看,web前端制作其实Service,这些请求逻辑web切图报价,我们都会发起onPollNetworkTime来进行相关逻辑处理. 也就是说,手机html制作onPollNetworkTime方法就是我们时间同步的主要关注对象. 1、onPollNetworkTime:

三、时间同步请求处理逻辑. 在第二部分符合w3c标准,我们讲到了接收的来自Telephony相关的广播,符合w3c标准或者数据库变化网页外包接活,我们的handler是如下处理这些请求的:

总结:NetworkTimeUpdateService时间同步web前端制作,一旦发起成功的时间同步,web前端制作时间数据会存在内存中承接网页制作,并根据当前机器运行时间来设定最新的时间.

$(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

点击次数:14349
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日jquery获取焦点和失去焦点事件代码2014年01月29日lua学习笔记16:table元表详解 【编程语言】2015年02月09日【HNOI2004】宠物收养所【重做Splay做法】 【编程语言】2015年01月12日Hibernate关系映射基础 【移动开发】2014年11月13日常用算法之交换两个数的值 【移动开发】2014年11月04日POJ1061青蛙绕地球约会-数论-(解一元一次同余方程+扩展欧几里得算法) 【移动开发】2015年08月14日2的次幂表示----递归算法【编程语言】2015年04月03日一个solr(MultiCore)的搜索项目的应用 【Web前端】2014年12月18日【概率论与数理统计】小结3-一维离散型随机变量及其Python实现2017年08月30日Android启动流程分析(十一)zygote的启动 【编程语言】2015年04月02日mysqlunion和unionall的区别以及使用【综合】2015年07月24日为虚拟机中的openSUSE12.1安装VBoxGuestAdditions4.1.10 【编程语言】2015年07月29日开发工具Eclipse4.2M5发布下载 ,,2016年07月24日JDBC中将图片保存到数据库 【综合】2014年12月11日Iframe自适应高度兼容ie,firefox多浏览器2014年01月29日Illustrator鼠绘教程:绘制雪地上堆雪人的孩童插画-小孩2014年01月28日opencv图像遍历方法速度对比【综合】2014年11月24日python获取糗百图片代码实例2014年01月29日使用excel进行数据挖掘(3)----类别检测 【编程语言】2015年06月24日说的话说是换多少合适的师傅事发地点【综合】2015年02月09日预防PHPDDOS的发包攻击别人的方法(iis+linux)2014年01月30日进程交互-基于NORFlash的嵌入式简易文件系统设计(3) 【编程语言】2014年11月24日AVR第11课:如何对待我们的单片机 【综合】2014年12月01日【CSDN_Markdown】使用CSDNMarkdown编辑器 【架构设计】2015年03月17日【c++】基类对象作为函数参数(赋值兼容规则) 【移动开发】2015年06月05日Andorid有EditText时自动高超软键盘 【移动开发】2015年08月15日Java网络编程笔记4 【编程语言】2015年01月13日BZOJ4128MatrixBaby-Step-Giant-Step+矩阵求逆 【编程语言】2015年06月24日Spring学习(十二)struts2+spring+hibernate环境搭建 【综合】2015年09月04日传说中的开源vs现实中的开源 ,,2016年07月24日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)