ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年5月7日 星期一

GsmDataConnectionTracker 內有一個 private subclass : private class ApnChangeObserver extends ContentObserver { 在Gsm生成時,註冊 傾聽 database 的變化: apnObserver = new ApnChangeObserver(); p.getContext().getContentResolver().registerContentObserver( Telephony.Carriers.CONTENT_URI, true, apnObserver); 這個 Telephony.Carriers.CONTENT_URI 好像就是 apn list。
所以database 變更 (apn 變更)時,observer 的 onChage 就會被呼叫: public void onChange(boolean selfChange) { sendMessage(obtainMessage(EVENT_APN_CHANGED)); }
送出 EVENT_APN_CHANGED 出去..

同理,handleMessage 收到,就call.. case EVENT_APN_CHANGED: onApnChanged(); break; 還是同一個 class,onApnChanged: if (state != State.DISCONNECTING) { 先斷線,再重連: cleanUpConnection(isConnected, Phone.REASON_APN_CHANGED); if (!isConnected) { // reset reconnect timer mRetryMgr.resetRetryCount(); mReregisterOnReconnectFailure = false; trySetupData(Phone.REASON_APN_CHANGED); trySetupData( ) 一堆檢查後,call phone.notifyDataConnection( )作連線的動作。

沒有留言:

標籤

網誌存檔