当前位置: 首页 > news >正文

网站建设上市公司中文域名的价值

网站建设上市公司,中文域名的价值,忘记wordpress登录密码,网站 要强化内容建设Android NTP时间同步源码分析 Android系统设置自动时间后#xff0c;如果连接了可用的网络。会同步网络时间。这个处理是 NetworkTimeUpdateService完成的。某些定制化的系统#xff0c;需要禁止网络时间同步。比如仅仅使用GPS时间。基于Android9#xff0c;分析一下 Andro…Android NTP时间同步源码分析 Android系统设置自动时间后如果连接了可用的网络。会同步网络时间。这个处理是 NetworkTimeUpdateService完成的。某些定制化的系统需要禁止网络时间同步。比如仅仅使用GPS时间。基于Android9分析一下 Android NTP时间的同步流程。 时序图 服务启动NetworkTimeUpdateService在SystemServer的startOtherServices中启动frameworks/base/services/java/com/android/server/SystemServer.java if (!isWatch) {traceBeginAndSlog(StartNetworkTimeUpdateService);try {networkTimeUpdater new NetworkTimeUpdateService(context);ServiceManager.addService(network_time_update_service, networkTimeUpdater);} catch (Throwable e) {reportWtf(starting NetworkTimeUpdate service, e);}traceEnd(); } // 省略 try {if (networkTimeUpdaterF ! null) networkTimeUpdaterF.systemRunning(); } catch (Throwable e) {reportWtf(Notifying NetworkTimeService running, e); }NetworkTimeUpdateService启动过程中会调用NTP、Conectivity服务注册监听NITZ、监听自动时间设定项(frameworks/base/services/core/java/com/android/server/NetworkTimeUpdateService.java) public NetworkTimeUpdateService(Context context) {mContext context;mTime NtpTrustedTime.getInstance(context);mAlarmManager mContext.getSystemService(AlarmManager.class);mCM mContext.getSystemService(ConnectivityManager.class);Intent pollIntent new Intent(ACTION_POLL, null);mPendingPollIntent PendingIntent.getBroadcast(mContext, POLL_REQUEST, pollIntent, 0);mPollingIntervalMs mContext.getResources().getInteger(com.android.internal.R.integer.config_ntpPollingInterval);mPollingIntervalShorterMs mContext.getResources().getInteger(com.android.internal.R.integer.config_ntpPollingIntervalShorter);mTryAgainTimesMax mContext.getResources().getInteger(com.android.internal.R.integer.config_ntpRetry);mTimeErrorThresholdMs mContext.getResources().getInteger(com.android.internal.R.integer.config_ntpThreshold);mWakeLock context.getSystemService(PowerManager.class).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); }/** Initialize the receivers and initiate the first NTP request */ public void systemRunning() {registerForTelephonyIntents();registerForAlarms();HandlerThread thread new HandlerThread(TAG);thread.start();mHandler new MyHandler(thread.getLooper());mNetworkTimeUpdateCallback new NetworkTimeUpdateCallback();mCM.registerDefaultNetworkCallback(mNetworkTimeUpdateCallback, mHandler);mSettingsObserver new SettingsObserver(mHandler, EVENT_AUTO_TIME_CHANGED);mSettingsObserver.observe(mContext); }当自动时间设定变更、网络状态变更、更新周期达到时会触发NetworkTimeUpdateService更新系统时间。通过获取NTP时间以及进行各种判断比如近期是否更新过NITZ时间最终判断是否使用NTP时间更新参考上面的时序图 /** Handler to do the network accesses on */ private class MyHandler extends Handler {public MyHandler(Looper l) {super(l);}Overridepublic void handleMessage(Message msg) {switch (msg.what) {case EVENT_AUTO_TIME_CHANGED:case EVENT_POLL_NETWORK_TIME:case EVENT_NETWORK_CHANGED:onPollNetworkTime(msg.what);break;}} }private void onPollNetworkTime(int event) {// If Automatic time is not set, dont bother. Similarly, if we dont// have any default network, dont bother.if (mDefaultNetwork null) return;mWakeLock.acquire();try {onPollNetworkTimeUnderWakeLock(event);} finally {mWakeLock.release();} }private void onPollNetworkTimeUnderWakeLock(int event) {// Force an NTP fix when outdatedif (mTime.getCacheAge() mPollingIntervalMs) {if (DBG) Log.d(TAG, Stale NTP fix; forcing refresh);mTime.forceRefresh();}if (mTime.getCacheAge() mPollingIntervalMs) {// Obtained fresh fix; schedule next normal updateresetAlarm(mPollingIntervalMs);if (isAutomaticTimeRequested()) {updateSystemClock(event);}} else {// No fresh fix; schedule retrymTryAgainCounter;if (mTryAgainTimesMax 0 || mTryAgainCounter mTryAgainTimesMax) {resetAlarm(mPollingIntervalShorterMs);} else {// Try much latermTryAgainCounter 0;resetAlarm(mPollingIntervalMs);}} }private void updateSystemClock(int event) {final boolean forceUpdate (event EVENT_AUTO_TIME_CHANGED);if (!forceUpdate) {if (getNitzAge() mPollingIntervalMs) {if (DBG) Log.d(TAG, Ignoring NTP update due to recent NITZ);return;}final long skew Math.abs(mTime.currentTimeMillis() - System.currentTimeMillis());if (skew mTimeErrorThresholdMs) {if (DBG) Log.d(TAG, Ignoring NTP update due to low skew);return;}}SystemClock.setCurrentTimeMillis(mTime.currentTimeMillis()); }上面的代码是基于Android9的。在Android12中引入了 TimeDetect服务通过配置frameworks/base/core/res/res/values/config.xml中的 “config_autoTimeSourcesPriority”这个设定项指定优先的时间源。所以在Android12中NetworkTimeUpdateService会将时间更新请求发送给 TimeDetect服务而不是直接使用SystemClock更新时间。关于Android12的NetworkTimeUpdateService详细流程这里不进行分析。
http://www.hkea.cn/news/14511819/

相关文章:

  • 大地保险网站宿州网站建设哪家公司好
  • 河口企业网站开发公司生存曲线哪个网站可以做
  • 好的文案网站定制旅游网站建设成都
  • 哪里有网站制作设计常用网站缩略图自定义
  • 多域名指向同一网站ps怎么做网站一寸的照片
  • 网站做软件有哪些网站托管
  • 农家乐怎么做网站不知道是谁做的网站 输入学号
  • wordpress站点地址没更改济南 网站建设那家好
  • 网站建设学习内容专业搜索引擎seo服务
  • 广州h5网站建设搭建自己的网站需要什么
  • 网站过期了怎么办营销软文推广平台
  • 做网站现在好弄么大连企业网站建站模板
  • 做效果图挣钱的网站微商城是什么
  • 美容行业培训网站建设网站开发工作要求
  • 网站建设公司如何生存vatage wordpress主题
  • 乐山住房和规划建设局门户网站手表网站排名前十
  • 网站建设柒金手指花总14公司网站制作需要多少钱义乌
  • 网站建设优化外包网站的流量是怎么回事
  • 佛山做外贸网站特色舟山seo
  • 潍坊网站建设 APP开发小程序wordpress中文 手机版
  • 电商网站设计趋势企业网站建设服务哪家好
  • 厦门企业网站建设方案营销策略模板
  • 门户网站开发哪种语言比较好哈尔滨关键词优化效果
  • 郑州视频网站建设大概多少钱邢台头条新闻
  • 国家级示范职业学校 建设网站wordpress 5.2更新了什么意思
  • 行知网站建设动漫做暧视频在线观看网站
  • 手机怎么做微电影网站吗邢台做移动网站价格表
  • 平潭县建设局网站谷歌竞价排名推广公司
  • 网站风格主要包括儿童设计网站
  • 排名好的网站关键词优化企业怎么在百度上投放广告