編輯:關於Android編程
名詞解釋:
NITZ:NITZ(Network Identity and Time Zone)或網絡標識和時區,是一種用於自動配置本地的時間和日期的機制,同時也通過無線網向移動設備提供運營商信息。NITZ是自從PHASE 2+ RELEASE 96 的GSM中的可選功能,經常被用來自動更新移動電話的系統時鐘。
NTP:NTP(Network Time Protocol)提供准確時間,首先要有准確的時間來源,這一時間應該是國際標准時間UTC。 NTP獲得UTC的時間來源可以是原子鐘、天文台、衛星,也可以從Internet上獲取。這樣就有了准確而可靠的時間源。時間按NTP服務器的等級傳播。
1.在setting中勾選“自動確定時間和日期”,“自動確定時區”後只是對key值為AUTO_TIME和AUTO_TIME_ZONE的Preference進行了賦值.
源碼路徑:packages/apps/Settings/src/com/android/settings/DateTimeSettings.java
2.在/frameworks/base/services/java/com/android/server/NetworkTimeUpdateService中對上述的key值進行了監聽,在檢測到key值改變的時候,就會發送消息mHandler.obtainMessage(mMsg).sendToTarget();
void observe(Context context) { ContentResolver resolver = context.getContentResolver(); resolver.registerContentObserver(Settings.Global.getUriFor(Settings.Global.AUTO_TIME), false, this); } @Override public void onChange(boolean selfChange) { mHandler.obtainMessage(mMsg).sendToTarget(); }
public void handleMessage(Message msg) { switch (msg.what) { case EVENT_AUTO_TIME_CHANGED: case EVENT_POLL_NETWORK_TIME: case EVENT_NETWORK_CONNECTED: onPollNetworkTime(msg.what); break; } }
// If NITZ time was received less than mPollingIntervalMs time ago, // no need to sync to NTP. if (mNitzTimeSetTime != NOT_SET && refTime - mNitzTimeSetTime < mPollingIntervalMs) { resetAlarm(mPollingIntervalMs); return; }
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. if (Math.abs(ntp - currentTime) > mTimeErrorThresholdMs || mLastNtpFetchTime == NOT_SET) { // Set the system time ...... if (ntp / 1000 < Integer.MAX_VALUE) { SystemClock.setCurrentTimeMillis(ntp); }
總結:
如果時間自動同步選項未勾選,直接返回;
如果NITZ已同步且上次NITZ同步未超過24小時,則設置定時器24小時後再觸發同步,即廣播NetworkTimeUpdateService.ACTION_POLL;
如果NTP上次成功同步超過24小時或用戶勾選自動同步選項,則進行下面的NTP同步,否則同上設置定時器24小時後再觸發同步;
如果上次NTP成功同步超過24小時,則發起同步mTime.forceRefresh();
如果同步成功,獲取此刻NTP時間ntp=mTime.currentTimeMillis();
如果同步時間與當前本機時間誤差超過指定值閥值,則把ntp設置為本機時間SystemClock.setCurrentTimeMillis(ntp)
可能小伙伴們讀了我上一篇博客關於Android文件存儲的的,在文件操作的時候大家有沒有疑問呀,有就對了,可能在保存自定義對象的時候,如何序列化呀?ClassLoader到
Android筆記——自動顯示、隱藏布局的ListView。學習了Android有一段時間了,學習的東西老是遺忘,於是決定寫博客來鞏固知識點,激勵
版本:1.0日期:2014.11.10 2014.11.11版權:© 2014 kince 轉載注明出處一、概述 桌面抽屜之間的切換時Android用戶經
QAQ學Android真的還是要在項目中獲得鍛煉,脫離實際一切都是耍流氓哼唧~!花了一下午時間搞定了項目中要實現的獲取本地圖片縮略圖並顯示在ListView上的,並且點擊